class Kontena::Cli::Vault::ImportCommand
Public Instance Methods
execute()
click to toggle source
# File lib/kontena/cli/vault/import_command.rb, line 26 def execute require_current_grid updates = [] deletes = [] parsed_input.map do |k,v| case v when String, Numeric, TrueClass, FalseClass if empty_is_null? && v.to_s.empty? deletes << k.to_s else updates << [k.to_s, v.to_s] end when NilClass deletes << k.to_s else exit_with_error "Invalid value type #{v.class} for #{k}." end end if updates.empty? && deletes.empty? exit_with_error "No secrets loaded" end unless forced? puts "About to.." puts " * #{Kontena.pastel.yellow("IMPORT")} #{updates.size} secret#{"s" if updates.size > 1}" unless updates.empty? puts " * #{Kontena.pastel.red("DELETE")} #{deletes.size} secret#{"s" if deletes.size > 1}" unless deletes.empty? confirm end unless updates.empty? spinner "Updating #{updates.size} secrets" do |spin| updates.each do |key_value_pair| spin.fail! unless Kontena.run(['vault', 'update', '--upsert', '--silent'] + key_value_pair) end end end unless deletes.empty? || skip_null? spinner "Deleting #{deletes.size} secrets" do |spin| deletes.map(&:shellescape).each do |key_to_delete| spin.fail! unless Kontena.run(['vault', 'rm', '--silent', '--force', key_to_delete]) end end end end
input()
click to toggle source
# File lib/kontena/cli/vault/import_command.rb, line 22 def input path ? File.read(path) : stdin_input("Enter secrets YAML", :multiline) end
parsed_input()
click to toggle source
# File lib/kontena/cli/vault/import_command.rb, line 17 def parsed_input require "json" json? ? JSON.load(input) : YAML.safe_load(input, [], [], true, path) end