exe/floe in floe-0.8.0 vs exe/floe in floe-0.9.0

- old
+ new

@@ -18,12 +18,10 @@ opt :docker, "Use docker to run images (short for --docker_runner=docker)", :type => :boolean opt :podman, "Use podman to run images (short for --docker_runner=podman)", :type => :boolean opt :kubernetes, "Use kubernetes to run images (short for --docker_runner=kubernetes)", :type => :boolean end -Optimist.die(:docker_runner, "must be one of #{Floe::Workflow::Runner::TYPES.join(", ")}") unless Floe::Workflow::Runner::TYPES.include?(opts[:docker_runner]) - # legacy support for --workflow args = ARGV.empty? ? [opts[:workflow], opts[:input]] : ARGV Optimist.die(:workflow, "must be specified") if args.empty? # shortcut support @@ -32,22 +30,17 @@ opts[:docker_runner] ||= "kubernetes" if opts[:kubernetes] require "logger" Floe.logger = Logger.new($stdout) -runner_klass = case opts[:docker_runner] - when "docker" - Floe::Workflow::Runner::Docker - when "podman" - Floe::Workflow::Runner::Podman - when "kubernetes" - Floe::Workflow::Runner::Kubernetes - end - runner_options = opts[:docker_runner_options].to_h { |opt| opt.split("=", 2) } -Floe::Workflow::Runner.docker_runner = runner_klass.new(runner_options) +begin + Floe.set_runner("docker", opts[:docker_runner], runner_options) +rescue ArgumentError => e + Optimist.die(:docker_runner, e.message) +end credentials = if opts[:credentials_given] opts[:credentials] == "-" ? $stdin.read : opts[:credentials] elsif opts[:credentials_file_given] @@ -60,16 +53,10 @@ Floe::Workflow.load(workflow, context, credentials) end # run -outstanding = workflows.dup -until outstanding.empty? - ready = outstanding.select(&:step_nonblock_ready?) - ready.map(&:run_nonblock) - outstanding -= ready.select(&:end?) - sleep(1) if !outstanding.empty? -end +Floe::Workflow.wait(workflows, &:run_nonblock) # display status workflows.each do |workflow| puts "", "#{workflow.name}#{" (#{workflow.status})" unless workflow.context.success?}", "===" if workflows.size > 1