Sha256: 1dddf42e542e8cf01938c33491df2a3dd88b2e896b5b958b2d0df022e4db0682

Contents?: true

Size: 915 Bytes

Versions: 1

Compression:

Stored size: 915 Bytes

Contents

module Pallets
  module DSL
    module Workflow
      def task(*args, **options, &block)
        name, depends_on = if args.any?
          [args.first, options[:depends_on]]
        else
          options.first
        end

        unless name
          raise WorkflowError, "Task has no name. Provide a name using " \
                               "`task :name, *args` or `task name: :arg` syntax"
        end

        # Handle nils, symbols or arrays consistently
        name = name.to_sym
        dependencies = Array(depends_on).compact.map(&:to_sym)
        graph.add(name, dependencies)

        class_name = options[:class_name] || Pallets::Util.camelize(name)
        max_failures = options[:max_failures] || Pallets.configuration.max_failures

        task_config[name] = {
          'class_name' => class_name,
          'max_failures' => max_failures
        }

        nil
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pallets-0.3.0 lib/pallets/dsl/workflow.rb