class RoboPigeon::Dsl::Root
Attributes
file[RW]
jobs[RW]
Public Class Methods
new(file = RoboPigeon::DEFAULT_FILE)
click to toggle source
# File lib/robopigeon/dsl.rb, line 11 def initialize(file = RoboPigeon::DEFAULT_FILE) self.file = file self.jobs = {} base init_help init_new if File.exist?(file) contents = File.read(file) instance_eval(contents, file) else init_job end end
run(&block)
click to toggle source
# File lib/robopigeon/dsl/job.rb, line 25 def self.run(&block) instance = new instance.instance_eval(&block) end
Public Instance Methods
gitlab(&block)
click to toggle source
# File lib/robopigeon/gitlab.rb, line 19 def gitlab(&block) RoboPigeon::Dsl::GitLabRoot.run(&block) end
jenkins(&block)
click to toggle source
# File lib/robopigeon/jenkins.rb, line 10 def jenkins(&block) RoboPigeon::Dsl::JenkinsRoot.run(&block) end
jira(&block)
click to toggle source
# File lib/robopigeon/jira.rb, line 25 def jira(&block) RoboPigeon::Dsl::JiraRoot.run(&block) end
job(*args, &block)
click to toggle source
# File lib/robopigeon/dsl/job.rb, line 30 def job(*args, &block) initial_name = args.shift this_job = { desc: args.pop, action: proc do job = RoboPigeon::Dsl::Job.new job.instance_eval(&block) end } jobs[initial_name] = this_job args.each do |arg| jobs[arg] = this_job.merge(hidden: true) end end
job?(name)
click to toggle source
# File lib/robopigeon/dsl.rb, line 29 def job?(name) !jobs[name].nil? end
run(name)
click to toggle source
# File lib/robopigeon/dsl.rb, line 25 def run(name) jobs[name][:action].call end
slack(&block)
click to toggle source
# File lib/robopigeon/slack.rb, line 18 def slack(&block) RoboPigeon::Dsl::SlackRoot.run(&block) end
usage()
click to toggle source
# File lib/robopigeon/dsl.rb, line 33 def usage max_size = jobs.keys.reject(&:nil?).max_by(&:length).size jobs_strings = jobs.keys.reject do |key| key.nil? || jobs[key][:hidden] end.map do |name| padding = ' ' * (max_size - name.length) " '#{name}' #{padding}- #{jobs[name][:desc]}" end.join("\n") puts "Usage: robopigeon 'job name'" puts "Jobs are configured in #{file}" puts 'See https://gitlab.com/pigeons/robopigeon for configuration' puts "Configured Jobs:\n#{jobs_strings}" end