Current section

Files

Jump to
shopifex lib mix tasks gen.controllers.ex
Raw

lib/mix/tasks/gen.controllers.ex

defmodule Mix.Tasks.Shopifex.Gen.Controllers do
@shortdoc "Generates Shopifex controller files"
@moduledoc """
Generates schema files.
mix shopifex.gen.controller
mix shopifex.gen.controller --namespace shopify_app
## Arguments
* `--namespace` - namespace to prepend table, schema and controller module name
* `--context-app` - context app to use for path and module names
"""
use Mix.Task
alias Mix.{Shopifex, Shopifex.Controller}
@switches [context_app: :string, namespace: :string]
@default_opts [ namespace: "shopify"]
@mix_task "shopifex.gen.controllers"
@impl true
def run(args) do
Shopifex.no_umbrella!(@mix_task)
args
|> Shopifex.parse_options(@switches, @default_opts)
|> parse()
|> create_controller_files()
end
defp parse({config, _parsed, _invalid}), do: config
defp create_controller_files(%{namespace: namespace} = config) do
context_app = Map.get(config, :context_app) || Shopifex.otp_app()
Controller.create_controller_files(context_app, namespace, [])
end
end