class Hyrb::Tasks::Github::SyncProjectTeam

Public Instance Methods

run(env) click to toggle source
# File lib/hyrb/tasks/github.rb, line 87
def run(env)
  team = env.github_team
  new_devs = env.project.developers(env.developers)
  current_members = env.github_client.team_members(team.id)

  members_to_remove = current_members.reject do |member|
    new_devs.map(&:github_username).include?(member.login)
  end

  devs_to_add = new_devs.reject do |dev|
    current_members.map(&:login).include?(dev.github_username)
  end

  members_to_remove.each do |member|
    if env.github_client.remove_team_member(team.id, member.login)
      say "Removed #{member.login} from team #{env.project.github_org}/#{team.slug}", :green
    else
      say "Couldn't remove #{member.login} from team #{env.project.github_org}/#{team.slug}", :red
    end
  end

  devs_to_add.each do |dev|
    if env.github_client.add_team_member(team.id, dev.github_username)
      say "Added #{dev.github_username} to team #{env.project.github_org}/#{team.slug}", :green
    else
      say "Couldn't add #{dev.github_username} to team #{env.project.github_org}/#{team.slug}", :red
    end
  end
end