Current section

Files

Jump to
pow lib mix tasks ecto pow.ecto.install.ex
Raw

lib/mix/tasks/ecto/pow.ecto.install.ex

defmodule Mix.Tasks.Pow.Ecto.Install do
@shortdoc "Generates user schema module and migrations file"
@moduledoc """
Generates a user schema module and migrations file.
mix pow.ecto.install -r MyApp.Repo
This generator will add the following files to `lib/`:
* a schema in lib/my_app/users/user.ex for `users` table
* a migration file in priv/repo/migrations for `users` table
"""
use Mix.Task
alias Mix.Pow.Utils
alias Mix.Tasks.Pow.{Ecto.Gen, Extension}
@switches [migrations: :boolean, schema: :boolean, extension: :keep]
@default_opts [migrations: true, schema: true]
@doc false
def run(args) do
Utils.no_umbrella!("pow.ecto.install")
args
|> Utils.parse_options(@switches, @default_opts)
|> maybe_run_gen_migration(args)
|> maybe_run_extension_gen_migrations(args)
|> maybe_run_gen_schema(args)
end
defp maybe_run_gen_migration(%{migrations: true} = config, args) do
Gen.Migration.run(args)
config
end
defp maybe_run_gen_migration(config, _args), do: config
defp maybe_run_extension_gen_migrations(%{migrations: true} = config, args) do
Extension.Ecto.Gen.Migrations.run(args)
config
end
defp maybe_run_extension_gen_migrations(config, _args), do: config
defp maybe_run_gen_schema(%{schema: true} = config, args) do
Gen.Schema.run(args ++ ~w(--no-migrations))
config
end
defp maybe_run_gen_schema(config, _args), do: config
end