Class List Method List File List

# Class: ROTP::CLI

Inherits:
  Object
  - Object
  - ROTP::CLI
  show all
Defined in:
  lib/rotp/cli.rb

## Instance Attribute Summary (collapse)

- - (Object) argv readonly

  Returns the value of attribute argv.

- - (Object) filename readonly

  Returns the value of attribute filename.

## Instance Method Summary (collapse)

- - (Object) arguments
- - (Object) errors
- - (CLI) initialize(filename, argv) constructor

  A new instance of CLI.

- - (Object) options
- - (Object) output
- - (Object) red(string)
- - (Object) run

## Constructor Details

### - (`CLI`) initialize(filename, argv)

Returns a new instance of CLI

    7
    8
    9
    10

    # File 'lib/rotp/cli.rb', line 7

    def initialize(filename, argv)
      @filename = filename
      @argv = argv
    end

## Instance Attribute Details

### - (`Object`) argv (readonly)

Returns the value of attribute argv

    5
    6
    7

    # File 'lib/rotp/cli.rb', line 5

    def argv
      @argv
    end

### - (`Object`) filename (readonly)

Returns the value of attribute filename

    5
    6
    7

    # File 'lib/rotp/cli.rb', line 5

    def filename
      @filename
    end

## Instance Method Details

### - (`Object`) arguments

    43
    44
    45

    # File 'lib/rotp/cli.rb', line 43

    def arguments
      @arguments ||= ROTP::Arguments.new(filename, argv)
    end

### - (`Object`) errors

    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26

    # File 'lib/rotp/cli.rb', line 16

    def errors
      if [: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.downcase) == nil }
          red 'Secret must be in RFC4648 Base32 format - http://en.wikipedia.org/wiki/Base32#RFC_4648_Base32_alphabet'
        end
      elsif options.mode == :hmac && options.counter.to_i < 0
        red 'You must also specify a --counter. Try --help for help.'
      end
    end

### - (`Object`) options

    47
    48
    49

    # File 'lib/rotp/cli.rb', line 47

    def options
      arguments.options
    end

### - (`Object`) output

    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41

    # File 'lib/rotp/cli.rb', line 28

    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).now
      elsif options.mode == :hmac
        ROTP::HOTP.new(options.secret).at options.counter

      else
        fail NotImplementedError
      end
    end

### - (`Object`) red(string)

    51
    52
    53

    # File 'lib/rotp/cli.rb', line 51

    def red(string)
      "\033[31m#{string}\033[0m"
    end

### - (`Object`) run

    12
    13
    14

    # File 'lib/rotp/cli.rb', line 12

    def run
      puts output
    end