File: C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/rotp-6.2.2/lib/rotp/cli.rb
require 'rotp/arguments'
module ROTP
class CLI
attr_reader :filename, :argv
def initialize(filename, argv)
@filename = filename
@argv = argv
end
# :nocov:
def run
puts output
end
# :nocov:
def errors
if %i[time hmac].include?(options.mode)
if options.secret.to_s == ''
red 'You must also specify a --secret. Try --help for help.'
elsif options.secret.to_s.chars.any? { |c| ROTP::Base32::CHARS.index(c.upcase).nil? }
red 'Secret must be in RFC4648 Base32 format - http://en.wikipedia.org/wiki/Base32#RFC_4648_Base32_alphabet'
end
end
end
def output
return options.warnings if options.warnings
return errors if errors
return arguments.to_s if options.mode == :help
if options.mode == :time
ROTP::TOTP.new(options.secret, options).now
elsif options.mode == :hmac
ROTP::HOTP.new(options.secret, options).at options.counter
end
end
def arguments
@arguments ||= ROTP::Arguments.new(filename, argv)
end
def options
arguments.options
end
def red(string)
"\033[31m#{string}\033[0m"
end
end
end