summaryrefslogtreecommitdiff
path: root/lib/tfa/cli.rb
blob: a73de1ee3f62be443cd290a8a13fdc09a765061e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
require "thor"

module TFA
  class CLI < Thor
    package_name "TFA"
    class_option :filename

    desc "add NAME SECRET", "add a new secret to the database"
    def add(name, secret)
      storage.save(name, secret)
      "Added #{name}"
    end

    desc "show NAME", "shows the secret for the given key"
    def show(name = nil)
      name ? storage.secret_for(name) : storage.all
    end

    desc "totp NAME", "generate a Time based One Time Password"
    def totp(name = nil)
      TotpCommand.new(storage).run([name])
    end

    private

    def storage
      @storage ||= Storage.new(filename: options[:filename] || 'tfa')
    end
  end
end