# class Chef::Knife::DataBagEdit

### Public Instance Methods

edit_item(item) click to toggle source

    # File lib/chef/knife/data_bag_edit.rb, line 70
    def edit_item(item)
      output = edit_data(item)
      if use_encryption
        Chef::EncryptedDataBagItem.encrypt_data_bag_item(output, read_secret)
      else
        output
      end
    end

load_item(bag, item_name) click to toggle source

    # File lib/chef/knife/data_bag_edit.rb, line 61
    def load_item(bag, item_name)
      item = Chef::DataBagItem.load(bag, item_name)
      if use_encryption
        Chef::EncryptedDataBagItem.new(item, read_secret).to_hash
      else
        item
      end
    end

read_secret() click to toggle source

    # File lib/chef/knife/data_bag_edit.rb, line 45
    def read_secret
      if config[:secret]
        config[:secret]
      else
        Chef::EncryptedDataBagItem.load_secret(config[:secret_file])
      end
    end

run() click to toggle source

    # File lib/chef/knife/data_bag_edit.rb, line 79
    def run
      if @name_args.length != 2
        stdout.puts "You must supply the data bag and an item to edit!"
        stdout.puts opt_parser
        exit 1
      end
      item = load_item(@name_args[0], @name_args[1])
      output = edit_item(item)
      rest.put_rest("data/#{@name_args[0]}/#{@name_args[1]}", output)
      stdout.puts("Saved data_bag_item[#{@name_args[1]}]")
      ui.output(output) if config[:print_after]
    end

use_encryption() click to toggle source

    # File lib/chef/knife/data_bag_edit.rb, line 53
    def use_encryption
      if config[:secret] && config[:secret_file]
        stdout.puts "please specify only one of --secret, --secret-file"
        exit(1)
      end
      config[:secret] || config[:secret_file]
    end