require 'rake_factory'
require 'octokit'

module RakeGithub
  module Tasks
    module DeployKey
      class Provision < RakeFactory::Task
        default_name :provision
        default_description RakeFactory::DynamicValue.new { |t|
          "Provision deploy key to the #{t.repository} repository"
        }

        parameter :repository, required: true
        parameter :access_token, required: true
        parameter :title, required: true
        parameter :public_key, required: true
        parameter :read_only, default: false

        action do |t|
          client = Octokit::Client.new(access_token: access_token)

          print "Adding deploy key '#{t.title}' to the " +
              "'#{t.repository}' repository... "
          client.add_deploy_key(
              t.repository,
              t.title,
              t.public_key,
              read_only: t.read_only)
          puts "Done."
        end
      end
    end
  end
end