Sha256: 44d14757e5c2e3b39524df56279bc487fcdc9b743b09b65926acd2373404c7f8

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

require 'wip/runner/workflow/builder'
require 'wip/runner/workflow/builder/component'
require 'wip/runner/workflow/builder/workflow'
require 'wip/runner/workflow/builder/task'
require 'wip/runner/workflow/builder/step'
require 'wip/runner/workflow/runner'

module WIP
  module Runner
    module Workflow
      class Error      < WIP::Runner::Error; end
      class GuardError < Error; end
      class HaltSignal < Error; end

      def self.define(&block)
        command = (eval 'self', block.send(:binding))
        command.send(:include, InstanceMethods)

        command.class_exec do
          options do |parser, config|
            config.overview = false
            config.preview  = false

            parser.on('--overview', 'Prints workflow overview') do
              config.no_validate = true
              config.overview    = true
            end

            parser.on('--preview', 'Prints workflow preview') do
              config.preview = true
            end

            define_method(:builder) do
              @builder ||= Builder.new(self, &block)
            end
          end
        end
      end

      module InstanceMethods
        def execute(arguments, options)
          workflow = builder.build(arguments, options)
          runner   = Runner.new(@ui, workflow)
          runner.run(options)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
wip-runner-0.4.1 lib/wip/runner/workflow.rb
wip-runner-0.4.0 lib/wip/runner/workflow.rb