lib/mix/tasks/doumi.port.setup.ex

defmodule Mix.Tasks.Doumi.Port.Setup do
  use Mix.Task

  @shortdoc "Setup Doumi.Port"

  @switchs [
    port: :string,
    path: :string,
    pip: :string
  ]

  @impl Mix.Task
  def run(args) do
    Mix.Doumi.Port.no_umbrella!()

    {opts, _, _} = OptionParser.parse(args, strict: @switchs)

    port = Keyword.get(opts, :port)
    path = Keyword.get(opts, :path, "priv/#{port}")

    Mix.Doumi.Port.valid_port!(port, "ex) mix doumi.port.setup --port python")

    case port do
      "python" ->
        pip = Keyword.get(opts, :pip, "pip3")

        System.cmd(pip, ~w(install -r requirements.txt -t ./lib), cd: path)

      "ruby" ->
        System.cmd("bundle", ~w(install --path ./lib), cd: path)
    end

    :ok
  end
end