From 6ff25bf342746d17215c74d89206dc988e15eade Mon Sep 17 00:00:00 2001 From: Zach Daniel Date: Wed, 27 Dec 2023 10:08:13 -0500 Subject: [PATCH] improvement: require `name` when generating migrations --- .../tasks/ash_postgres.generate_migrations.ex | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lib/mix/tasks/ash_postgres.generate_migrations.ex b/lib/mix/tasks/ash_postgres.generate_migrations.ex index 3b6249df..4a3154d1 100644 --- a/lib/mix/tasks/ash_postgres.generate_migrations.ex +++ b/lib/mix/tasks/ash_postgres.generate_migrations.ex @@ -72,6 +72,18 @@ defmodule Mix.Tasks.AshPostgres.GenerateMigrations do @shortdoc "Generates migrations, and stores a snapshot of your resources" def run(args) do + {name, args} = + case args do + ["-" <> _ | _] -> + {nil, args} + + [first | rest] -> + {first, rest} + + [] -> + {nil, []} + end + {opts, _} = OptionParser.parse!(args, strict: [ @@ -94,6 +106,18 @@ defmodule Mix.Tasks.AshPostgres.GenerateMigrations do opts |> Keyword.put(:format, !opts[:no_format]) |> Keyword.delete(:no_format) + |> Keyword.put_new(:name, name) + + if !opts[:name] && !opts[:dry_run] && !opts[:check] do + IO.warn(""" + Name must be provided when generating migrations, unless `--dry-run` or `--check` is also provided. + Using an autogenerated name will be deprecated in a future release. + + Please provide a name. for example: + + mix ash_postgres.generate_migrations #{Enum.join(args, " ")} + """) + end AshPostgres.MigrationGenerator.generate(apis, opts) end