lib/chef/knife/encrypt_create.rb in chef-vault-2.0.2 vs lib/chef/knife/encrypt_create.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 create [VAULT] [ITEM] [VALUES] "\ - "--mode MODE --search SEARCH --admins ADMINS --json FILE" + banner "knife encrypt create 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,35 +46,45 @@ 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) raise ChefVault::Exceptions::ItemAlreadyExists, "#{vault_item.data_bag}/#{vault_item.id} already exists, "\ "use 'knife encrypt remove' and "\ "'knife encrypt update' to make changes." rescue ChefVault::Exceptions::KeysNotFound, ChefVault::Exceptions::ItemNotFound vault_item = ChefVault::Item.new(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 end @@ -86,6 +96,6 @@ def show_usage super exit 1 end end - \ No newline at end of file +