Class: Hyrb::Tasks::Github::SyncProjectTeam

Inherits:
Hyrb::Task
  • Object
show all
Defined in:
lib/hyrb/tasks/github.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



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# 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.)
  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.)
      say "Removed #{member.} from team #{env.project.github_org}/#{team.slug}", :green
    else
      say "Couldn't remove #{member.} 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