class Itamae::Secrets::Cli
Public Instance Methods
get(name)
click to toggle source
# File lib/itamae/secrets/cli.rb, line 50 def get(name) value = store[name] if value puts value else exit 1 end end
newkey(name='default')
click to toggle source
# File lib/itamae/secrets/cli.rb, line 18 def newkey(name='default') if keychain.exist?(name) raise ArgumentError, "key #{name} already exists" end key = case options[:method] || config['generate_method'] when 'aes-random' AesKey.generate_random(name) when 'aes-passphrase' passphrase = ask_noecho('Passphrase:', $stdin.tty?) AesKey.generate_pkcs5(name, passphrase) else raise ArgumentError, "Unknown method: #{options[:method] || config['generate_method']}" end keychain.save(key) end
set(name, value = nil)
click to toggle source
# File lib/itamae/secrets/cli.rb, line 39 def set(name, value = nil) value ||= if options[:noecho] ask_noecho("#{name}:", false) else $stdin.read.chomp end store.store(name, value, options[:key]) end
Private Instance Methods
ask_noecho(prompt, confirm = true)
click to toggle source
# File lib/itamae/secrets/cli.rb, line 90 def ask_noecho(prompt, confirm = true) io_console = false begin require 'io/console' io_console = true rescue LoadError end get = -> do if $stdin.tty? $stdin.noecho { $stdin.gets.chomp } else $stdin.gets.chomp end end loop do $stdout.print "#{prompt} " value = get.call break value unless confirm $stdout.print "(confirm) #{prompt} " break value if value == get.call $stderr.puts "Confirmation didn't match..." end end
base_dir()
click to toggle source
# File lib/itamae/secrets/cli.rb, line 69 def base_dir unless config['base'] raise ArgumentError, 'Missing --base' end Pathname.new config['base'] end
config()
click to toggle source
# File lib/itamae/secrets/cli.rb, line 76 def config @config ||= config_file.merge( 'base' => config_file['base'] || options[:base], ) end
config_file()
click to toggle source
# File lib/itamae/secrets/cli.rb, line 82 def config_file @config_file ||= if File.exist?('./.itamae-secrets.yml') YAML.load_file('./.itamae-secrets.yml') else {} end end
keychain()
click to toggle source
# File lib/itamae/secrets/cli.rb, line 65 def keychain store.keychain end
store()
click to toggle source
# File lib/itamae/secrets/cli.rb, line 61 def store @store ||= Store.new base_dir end