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