Sha256: 4e96a6344d0ddd5afb3a9fe385f229b8363a4dfbad98c5db4ebe5b385ba49052

Contents?: true

Size: 1.34 KB

Versions: 20

Compression:

Stored size: 1.34 KB

Contents

require 'rake_factory'

require_relative '../../client'

module RakeCircleCI
  module Tasks
    module SSHKeys
      class Provision < RakeFactory::Task
        default_name :provision
        default_description RakeFactory::DynamicValue.new { |t|
          "Provision SSH keys on the #{t.project_slug} project"
        }

        parameter :project_slug, required: true
        parameter :api_token, required: true
        parameter :base_url, default: 'https://circleci.com/api'
        parameter :ssh_keys, default: {}

        action do |t|
          client = Client.new(
              base_url: t.base_url,
              api_token: t.api_token,
              project_slug: t.project_slug)

          puts "Provisioning all SSH keys to the '#{t.project_slug}' " +
              "project... "

          t.ssh_keys.each do |ssh_key|
            private_key = ssh_key[:private_key]
            hostname = ssh_key[:hostname]
            fingerprint = SSHKey.new(private_key).sha1_fingerprint

            print "Adding SSH key with fingerprint: '#{fingerprint}'"
            print " for hostname: '#{hostname}'" if hostname
            print "..."
            options = hostname && {hostname: hostname}
            args = [private_key, options].compact
            client.create_ssh_key(*args)
            puts "Done."
          end
        end
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
rake_circle_ci-0.10.0.pre.6 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.10.0.pre.5 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.10.0.pre.4 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.10.0.pre.3 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.10.0.pre.2 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.10.0.pre.1 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.9.0 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.8.0.pre.4 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.8.0.pre.3 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.8.0.pre.2 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.8.0.pre.1 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.7.0 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.6.0.pre.1 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.5.0 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.4.0.pre.1 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.3.0 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.2.0.pre.11 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.2.0.pre.10 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.2.0.pre.9 lib/rake_circle_ci/tasks/ssh_keys/provision.rb
rake_circle_ci-0.2.0.pre.8 lib/rake_circle_ci/tasks/ssh_keys/provision.rb