class Hyrb::Tasks::DigitalOcean::SyncSSHKeys

Public Instance Methods

run(env) click to toggle source
# File lib/hyrb/tasks/digital_ocean.rb, line 61
def run(env)
  env.digital_ocean_ssh_keys.each do |dokey|
    unless key = env.developers.any? { |dev| dev.keys.include? dokey.ssh_pub_key }
      say "Removing #{dokey.name} SSH key from Digital Ocean", :green
      env.digital_ocean_client.ssh_keys.destroy(dokey.id)
    end
  end

  env.developers.select { |d| d.keys.any? }.each do |dev|
    if key = env.digital_ocean_ssh_keys.any? { |k| dev.keys.include? k.ssh_pub_key }
      say "#{dev.name}'s keys already added to Digital Ocean", :yellow
    else
      dev.keys.each do |pubkey, i|
        say "Adding pubkey for #{dev.name} to Digital Ocean", :green
        env.digital_ocean_client.ssh_keys.create(name: dev.name, ssh_pub_key: pubkey)
      end
    end
  end
end