Sha256: a4d135cc1ba0e7d8c95cf112d451b9ecca2c4ded3d5923f1d0de49456183008d

Contents?: true

Size: 1.84 KB

Versions: 4

Compression:

Stored size: 1.84 KB

Contents

require_relative 'freestyle'
require_relative 'flow'
require_relative 'pipeline'
require_relative 'multijob'
require_relative 'view'
require_relative 'xml_generator'

module JenkinsJob
  # dsl methods for job builder
  class Builder
    attr_reader :jobs, :views

    def initialize(&block)
      @default_setting = []
      @default_setting << block if block_given?
      @jobs = {}
      @views = {}
    end

    def add_extension(&block)
      @default_setting << block if block_given?
    end

    def freestyle(name, &block)
      @jobs[name] = FreeStyle.new(name, self)

      @default_setting.each do |extension|
        @jobs[name].instance_eval(&extension)
      end

      @jobs[name].instance_eval(&block)
    end

    def flow(name, &block)
      @jobs[name] = Flow.new(name, self)

      @default_setting.each do |extension|
        @jobs[name].instance_eval(&extension)
      end

      @jobs[name].instance_eval(&block)
    end

    def pipeline(name, &block)
      @jobs[name] = Pipeline.new(name, self)

      @default_setting.each do |extension|
        @jobs[name].instance_eval(&extension)
      end

      @jobs[name].instance_eval(&block)
    end    

    def multi(name, &block)
      @jobs[name] = MultiJob.new(name, self)

      @default_setting.each do |extension|
        @jobs[name].instance_eval(&extension)
      end

      @jobs[name].instance_eval(&block)
    end

    def view(name, &block)
      @views[name] = View.new(name, self)
      @views[name].instance_eval(&block)
    end

    def generate_xml
      return unless block_given?
      generator = XmlGenerator.new
      @jobs.each do |name, job|
        yield name, generator.generate(job), :job
      end
      @views.each do |name, job|
        yield name, generator.generate(job), :view
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rubyjobbuilderdsl-0.0.6 lib/rubyjobbuilderdsl/builder.rb
rubyjobbuilderdsl-0.0.5 lib/rubyjobbuilderdsl/builder.rb
rubyjobbuilderdsl-0.0.4 lib/rubyjobbuilderdsl/builder.rb
rubyjobbuilderdsl-0.0.3 lib/rubyjobbuilderdsl/builder.rb