Current section

Files

Jump to
condukt lib mix tasks condukt.workflows.run.ex
Raw

lib/mix/tasks/condukt.workflows.run.ex

defmodule Mix.Tasks.Condukt.Workflows.Run do
@shortdoc "Runs a Condukt workflow"
@moduledoc """
Runs one Condukt workflow from a project.
"""
use Mix.Task
alias Condukt.Workflows
alias Mix.Tasks.Condukt.Workflows.Helpers
@requirements ["app.start"]
@impl Mix.Task
def run(args) do
{opts, rest} = Helpers.parse!(args, root: :string, input: :string)
name =
case rest do
[name] -> name
[] -> Mix.raise("Expected workflow name")
_ -> Mix.raise("Expected exactly one workflow name")
end
project =
opts
|> Helpers.root()
|> Helpers.load_project!()
input = Helpers.decode_input!(opts[:input])
case Workflows.run(project, name, input) do
{:ok, result} -> Mix.shell().info(Helpers.format_result(result))
{:error, reason} -> Mix.raise("Workflow run failed: #{inspect(reason)}")
end
end
end