Class: Hyrb::Tasks::Developers::AddToProject

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

#list_devs(devs) ⇒ Object



99
100
101
# File 'lib/hyrb/tasks/developers.rb', line 99

def list_devs(devs)
  devs.each {|d| say "#{d.name} <#{d.email}>"}
end

#prompt_for_dev(devs) ⇒ Object



103
104
105
# File 'lib/hyrb/tasks/developers.rb', line 103

def prompt_for_dev(devs)
  option_list(devs) { |d, i| "#{i+1}: #{d.name} <#{d.email}>" }
end

#run(env) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/hyrb/tasks/developers.rb', line 77

def run(env)
  added_devs = if env.project.users.try(:any?)
    env.developers.select {|dev| env.project.users.include? dev.email }
  else
    env.developers.select {|dev| dev.role == :admin }
  end

  loop do
    say "Devs with access"
    list_devs(added_devs)

    break unless yes? "Add more devs?"

    dev_list = env.developers - added_devs
    devs = *prompt_for_dev(dev_list)
    added_devs += devs
  end

  env.project.users = added_devs.map(&:email)
  env.project.save!
end