namespace :one_secret do

desc "Encrypts and sets a new secret in config/secrets.yml under the current environment"
task :set => :environment do
  key, value = *ARGV[1..2]
  OneSecret.set(Rails.env, key, value)

  disable_tasks(key, value)
end

desc "Encrypts and displays a new secret, but does not store it in config/secrets.yml"
task :build => :environment do
  value = ARGV[1]
  puts OneSecret.build(value).to_hash

  disable_tasks(value)
end

desc "Decrypts and gets a secret from the current environment in config/secrets.yml"
task :get => :environment do
  key = ARGV[1]
  puts OneSecret.get(Rails.env, key)

  disable_tasks(key)
end

desc "Decrypts and gets all secrets from the current environment in config/secrets.yml"
task :get_all => :environment do
  puts OneSecret.get_all(Rails.env)
end

def disable_tasks(*tasks)
  tasks.each do |task_name|
    task task_name.to_sym do ; end
  end
end

end