#!/usr/bin/env ruby
require 'octokit'

class Team
  attr_reader :gh, :name

  def initialize(gh, name)
    @gh = gh
    @name = name
  end

  def add_member(login)
    gh.add_team_membership(id, login)
  end

  def id
    team['id']
  end

  def team
    @team ||=
      gh.organization_teams('cucumber')
        .find { |team| team['name'] == name } || raise("Unable to find a team named #{name}")
  end
end

begin
  token = ENV['GITHUB_TOKEN'] || raise('You need to set GITHUB_TOKEN')
  login = (ARGV[0] || raise("syntax: #{$PROGRAM_NAME} <COLLABORATOR_LOGIN>")).to_s

  gh = Octokit::Client.new(access_token: token)
  [
    Team.new(gh, 'cucumber-ruby'),
    Team.new(gh, 'collaborators')
  ].each do |team|
    team.add_member(login)
  end
rescue StandardError => e
  abort e.message
end
