defmodule Mix.Tasks.Kraken.Pipelines do use Mix.Task alias Kraken.Client @shortdoc "Manipulates Kraken pipelines." @moduledoc """ Manipulates Kraken pipelines. """ def run(args) do {:ok, _pid} = Client.start_finch() case args do [] -> "/pipelines" |> Client.get() |> print() ["define", payload] -> "/pipelines/define" |> Client.post(payload) |> print() ["status", name] -> "/pipelines/status/#{name}" |> Client.get() |> print() ["definition", name] -> "/pipelines/definition/#{name}" |> Client.get() |> print() ["start", name] -> "/pipelines/start/#{name}" |> Client.post("") |> print() ["stop", name] -> "/pipelines/stop/#{name}" |> Client.post("") |> print() ["delete", name] -> "/pipelines/delete/#{name}" |> Client.post("") |> print() ["call", name, payload] -> "/pipelines/call/#{name}" |> Client.post(payload) |> print() ["cast", name, payload] -> "/pipelines/cast/#{name}" |> Client.post(payload) |> print() ["stream", name, payload] -> "/pipelines/stream/#{name}" |> Client.stream(payload, &print/1) args -> IO.puts("Unknown command: #{Enum.join(args, " ")}") end end defp print(json) do json |> Jason.Formatter.pretty_print() |> IO.puts() end end