Class: Hyrb::Tasks::DigitalOcean::SyncSSHKeys

Inherits:
Hyrb::Task
  • Object
show all
Defined in:
lib/hyrb/tasks/digital_ocean.rb

Instance Attribute Summary

Attributes inherited from Hyrb::Task

#env, #pipeline

Instance Method Summary collapse

Methods inherited from Hyrb::Task

depends, #initialize, prompt, prompts, #run_before

Constructor Details

This class inherits a constructor from Hyrb::Task

Instance Method Details

#run(env) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# 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