lib/chef/knife/encrypt_update.rb in chef-vault-2.0.2 vs lib/chef/knife/encrypt_update.rb in chef-vault-2.1.0

- old
+ new

@@ -23,12 +23,12 @@ require File.expand_path('../mixin/helper', __FILE__) include ChefVault::Mixin::KnifeCompat include ChefVault::Mixin::Helper end - banner "knife encrypt update [VAULT] [ITEM] [VALUES] "\ - "--mode MODE --search SEARCH --admins ADMINS --json FILE" + banner "knife encrypt update VAULT ITEM VALUES "\ + "--mode MODE --search SEARCH --admins ADMINS --json FILE --file FILE" option :mode, :short => '-M MODE', :long => '--mode MODE', :description => 'Chef mode to run in default - solo' @@ -46,28 +46,38 @@ option :json, :short => '-J FILE', :long => '--json FILE', :description => 'File containing JSON data to encrypt' + option :file, + :long => '--file FILE', + :description => 'File to be added to vault item as file-content' + def run vault = @name_args[0] item = @name_args[1] values = @name_args[2] search = config[:search] admins = config[:admins] json_file = config[:json] + file = config[:file] set_mode(config[:mode]) - if vault && item && ((values || json_file) || (search || admins)) + if vault && item && ((values || json_file || file) || (search || admins)) begin vault_item = ChefVault::Item.load(vault, item) merge_values(values, json_file).each do |key, value| vault_item[key] = value - end + end + if file + vault_item["file-name"] = File.basename(file) + vault_item["file-content"] = File.open(file){ |file| file.read() } + end + vault_item.clients(search) if search vault_item.admins(admins) if admins vault_item.save rescue ChefVault::Exceptions::KeysNotFound, @@ -85,6 +95,6 @@ def show_usage super exit 1 end end - \ No newline at end of file +