Sha256: ce2fff783ff70647866778857f123a221e3c9883590902a4b74e1f4243471367

Contents?: true

Size: 1.14 KB

Versions: 5

Compression:

Stored size: 1.14 KB

Contents

require 'robopigeon/dsl/helpers'
require 'robopigeon/dsl/job'
require 'robopigeon/dsl/base'
require 'robopigeon/dsl/initial_jobs'

module RoboPigeon::Dsl
  class Root
    include RoboPigeon::Dsl::InitialJobs
    attr_accessor :jobs, :file

    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

    def run(name)
      jobs[name][:action].call
    end

    def job?(name)
      !jobs[name].nil?
    end

    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
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
robopigeon-0.5.1 lib/robopigeon/dsl.rb
robopigeon-0.5.0 lib/robopigeon/dsl.rb
robopigeon-0.4.0 lib/robopigeon/dsl.rb
robopigeon-0.3.2 lib/robopigeon/dsl.rb
robopigeon-0.3.1 lib/robopigeon/dsl.rb