Current section

Files

Jump to
cigogne src cigogne@internal@cli.erl
Raw

src/cigogne@internal@cli.erl

-module(cigogne@internal@cli).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-define(FILEPATH, "src/cigogne/internal/cli.gleam").
-export([get_action/2]).
-export_type([cli_actions/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(false).
-type cli_actions() :: {migrate_up, cigogne@config:config(), integer()} |
{migrate_down, cigogne@config:config(), integer()} |
{show_migrations, cigogne@config:config()} |
{migrate_up_all, cigogne@config:config()} |
{new_migration, cigogne@config:migrations_config(), binary()} |
{include_lib, cigogne@config:config(), binary()} |
{remove_lib, cigogne@config:config(), binary()} |
{update_config, cigogne@config:config()} |
init_config |
{print_unapplied, cigogne@config:config()}.
-file("src/cigogne/internal/cli.gleam", 160).
?DOC(false).
-spec init_config_action() -> cigogne@internal@cli_lib:action(cli_actions()).
init_config_action() ->
cigogne@internal@cli_lib:create_action(
[<<"config"/utf8>>, <<"init"/utf8>>],
<<"Create cigogne's config for your project"/utf8>>,
(cigogne@internal@cli_lib:options(init_config))
).
-file("src/cigogne/internal/cli.gleam", 193).
?DOC(false).
-spec database_config_decoder() -> cigogne@internal@cli_lib:action_decoder(cigogne@config:database_config()).
database_config_decoder() ->
cigogne@internal@cli_lib:flag(
<<"url"/utf8>>,
[],
<<"URL"/utf8>>,
<<"Database URL, if specified replaces other DB parameters"/utf8>>,
{flag_decoder, none, fun cigogne@internal@cli_lib:decode_string/1},
fun(Url) ->
cigogne@internal@cli_lib:flag(
<<"host"/utf8>>,
[<<"H"/utf8>>],
<<"HOST"/utf8>>,
<<"Database host (default: localhost)"/utf8>>,
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_string/1},
fun(Host) ->
cigogne@internal@cli_lib:flag(
<<"user"/utf8>>,
[<<"U"/utf8>>],
<<"USER"/utf8>>,
<<"Database user (default: postgres)"/utf8>>,
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_string/1},
fun(User) ->
cigogne@internal@cli_lib:flag(
<<"password"/utf8>>,
[<<"W"/utf8>>],
<<"PASSWD"/utf8>>,
<<"Database password (default: postgres)"/utf8>>,
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_string/1},
fun(Password) ->
cigogne@internal@cli_lib:flag(
<<"port"/utf8>>,
[<<"P"/utf8>>],
<<"PORT"/utf8>>,
<<"Database port (default: 5432)"/utf8>>,
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_int/1},
fun(Port) ->
cigogne@internal@cli_lib:flag(
<<"database"/utf8>>,
[<<"D"/utf8>>],
<<"NAME"/utf8>>,
<<"Database name (default: postgres)"/utf8>>,
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_string/1},
fun(Name) -> _pipe = Url,
_pipe@1 = gleam@option:map(
_pipe,
fun(Field@0) -> {url_db_config, Field@0} end
),
_pipe@2 = gleam@option:unwrap(
_pipe@1,
case {Host,
User,
Password,
Port,
Name} of
{none,
none,
none,
none,
none} ->
env_var_config;
{_, _, _, _, _} ->
{detailed_db_config,
Host,
User,
Password,
Port,
Name}
end
),
cigogne@internal@cli_lib:options(
_pipe@2
) end
)
end
)
end
)
end
)
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 254).
?DOC(false).
-spec migration_table_config_decoder() -> cigogne@internal@cli_lib:action_decoder(cigogne@config:migration_table_config()).
migration_table_config_decoder() ->
cigogne@internal@cli_lib:flag(
<<"schema"/utf8>>,
[<<"S"/utf8>>],
<<"SCHEMA"/utf8>>,
<<"Database schema to use (default: public)"/utf8>>,
{flag_decoder, none, fun cigogne@internal@cli_lib:decode_string/1},
fun(Schema) ->
cigogne@internal@cli_lib:flag(
<<"migrations-table"/utf8>>,
[<<"T"/utf8>>],
<<"TABLE"/utf8>>,
<<"Migrations table name (default: _migrations)"/utf8>>,
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_string/1},
fun(Table) ->
cigogne@internal@cli_lib:options(
{migration_table_config, Schema, Table}
)
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 275).
?DOC(false).
-spec migrations_config_decoder(binary()) -> cigogne@internal@cli_lib:action_decoder(cigogne@config:migrations_config()).
migrations_config_decoder(Application_name) ->
cigogne@internal@cli_lib:flag(
<<"migration-folder"/utf8>>,
[<<"M"/utf8>>],
<<"FOLDER"/utf8>>,
<<"Folder to store migrations in the priv folder (default: migrations)"/utf8>>,
{flag_decoder, none, fun cigogne@internal@cli_lib:decode_string/1},
fun(Migration_folder) ->
cigogne@internal@cli_lib:flag(
<<"no-hash-check"/utf8>>,
[],
<<""/utf8>>,
<<"/!\\ Warning: not recommended in production /!\\ Disable hash checks on engine creation. Can be useful during development."/utf8>>,
{flag_decoder,
false,
fun cigogne@internal@cli_lib:decode_bool/1},
fun(No_hash_check) ->
cigogne@internal@cli_lib:options(
{migrations_config,
Application_name,
Migration_folder,
[],
{some, No_hash_check}}
)
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 93).
?DOC(false).
-spec new_migration_action(binary()) -> cigogne@internal@cli_lib:action(cli_actions()).
new_migration_action(Application_name) ->
cigogne@internal@cli_lib:create_action(
[<<"new"/utf8>>],
<<"Create a new migration file (by default created in priv/migrations)"/utf8>>,
begin
cigogne@internal@cli_lib:then_action(
migrations_config_decoder(Application_name),
fun(Migrations) ->
cigogne@internal@cli_lib:flag(
<<"name"/utf8>>,
[<<"N"/utf8>>],
<<"NAME"/utf8>>,
<<"Name of the migration file"/utf8>>,
cigogne@internal@cli_lib:required(
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_string/1},
<<""/utf8>>
),
fun(Name) ->
cigogne@internal@cli_lib:options(
{new_migration, Migrations, Name}
)
end
)
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 181).
?DOC(false).
-spec config_decoder(binary()) -> cigogne@internal@cli_lib:action_decoder(cigogne@config:config()).
config_decoder(Application_name) ->
cigogne@internal@cli_lib:then_action(
database_config_decoder(),
fun(Database) ->
cigogne@internal@cli_lib:then_action(
migration_table_config_decoder(),
fun(Migration_table) ->
cigogne@internal@cli_lib:map_action(
migrations_config_decoder(Application_name),
fun(Migrations) ->
{config, Database, Migration_table, Migrations}
end
)
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 37).
?DOC(false).
-spec migrate_up_action(binary()) -> cigogne@internal@cli_lib:action(cli_actions()).
migrate_up_action(Application_name) ->
cigogne@internal@cli_lib:create_action(
[<<"up"/utf8>>],
<<"Migrate up one version / Apply one migration"/utf8>>,
begin
cigogne@internal@cli_lib:flag(
<<"count"/utf8>>,
[<<"n"/utf8>>],
<<"N"/utf8>>,
<<"Number of migrations to apply"/utf8>>,
{flag_decoder, none, fun cigogne@internal@cli_lib:decode_int/1},
fun(Count) ->
cigogne@internal@cli_lib:map_action(
config_decoder(Application_name),
fun(Config) ->
{migrate_up,
Config,
begin
_pipe = Count,
gleam@option:unwrap(_pipe, 1)
end}
end
)
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 55).
?DOC(false).
-spec migrate_down_action(binary()) -> cigogne@internal@cli_lib:action(cli_actions()).
migrate_down_action(Application_name) ->
cigogne@internal@cli_lib:create_action(
[<<"down"/utf8>>],
<<"Migrate down one version / Rollback one migration"/utf8>>,
begin
cigogne@internal@cli_lib:flag(
<<"count"/utf8>>,
[<<"n"/utf8>>],
<<"N"/utf8>>,
<<"Number of migrations to rollback"/utf8>>,
{flag_decoder, none, fun cigogne@internal@cli_lib:decode_int/1},
fun(Count) ->
cigogne@internal@cli_lib:map_action(
config_decoder(Application_name),
fun(Config) ->
{migrate_down,
Config,
begin
_pipe = Count,
gleam@option:unwrap(_pipe, 1)
end}
end
)
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 73).
?DOC(false).
-spec show_migrations_action(binary()) -> cigogne@internal@cli_lib:action(cli_actions()).
show_migrations_action(Application_name) ->
cigogne@internal@cli_lib:create_action(
[<<"show"/utf8>>],
<<"Show data about the current state of migrations"/utf8>>,
begin
cigogne@internal@cli_lib:map_action(
config_decoder(Application_name),
fun(Config) -> {show_migrations, Config} end
)
end
).
-file("src/cigogne/internal/cli.gleam", 86).
?DOC(false).
-spec migrate_up_all_action(binary()) -> cigogne@internal@cli_lib:action(cli_actions()).
migrate_up_all_action(Application_name) ->
cigogne@internal@cli_lib:create_action(
[<<"all"/utf8>>],
<<"Apply all non-applied migrations"/utf8>>,
begin
cigogne@internal@cli_lib:map_action(
config_decoder(Application_name),
fun(Config) -> {migrate_up_all, Config} end
)
end
).
-file("src/cigogne/internal/cli.gleam", 113).
?DOC(false).
-spec include_lib_action(binary()) -> cigogne@internal@cli_lib:action(cli_actions()).
include_lib_action(Application_name) ->
cigogne@internal@cli_lib:create_action(
[<<"include"/utf8>>],
<<"Include migrations from specified library"/utf8>>,
begin
cigogne@internal@cli_lib:then_action(
config_decoder(Application_name),
fun(Config) ->
cigogne@internal@cli_lib:flag(
<<"name"/utf8>>,
[<<"N"/utf8>>],
<<"LIB_NAME"/utf8>>,
<<"Name of the library to include"/utf8>>,
cigogne@internal@cli_lib:required(
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_string/1},
<<""/utf8>>
),
fun(Lib_name) ->
cigogne@internal@cli_lib:options(
{include_lib, Config, Lib_name}
)
end
)
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 131).
?DOC(false).
-spec remove_lib_action(binary()) -> cigogne@internal@cli_lib:action(cli_actions()).
remove_lib_action(Application_name) ->
cigogne@internal@cli_lib:create_action(
[<<"remove"/utf8>>],
<<"Remove migrations from specified library"/utf8>>,
begin
cigogne@internal@cli_lib:then_action(
config_decoder(Application_name),
fun(Config) ->
cigogne@internal@cli_lib:flag(
<<"name"/utf8>>,
[<<"N"/utf8>>],
<<"LIB_NAME"/utf8>>,
<<"Name of the library to remove"/utf8>>,
cigogne@internal@cli_lib:required(
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_string/1},
<<""/utf8>>
),
fun(Lib_name) ->
cigogne@internal@cli_lib:options(
{remove_lib, Config, Lib_name}
)
end
)
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 149).
?DOC(false).
-spec update_config_action(binary()) -> cigogne@internal@cli_lib:action(cli_actions()).
update_config_action(Application_name) ->
cigogne@internal@cli_lib:create_action(
[<<"config"/utf8>>, <<"update"/utf8>>],
<<"Update cigogne's config for your project with provided options"/utf8>>,
begin
cigogne@internal@cli_lib:then_action(
config_decoder(Application_name),
fun(Config) ->
cigogne@internal@cli_lib:options({update_config, Config})
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 168).
?DOC(false).
-spec print_unapplied_action(binary()) -> cigogne@internal@cli_lib:action(cli_actions()).
print_unapplied_action(Application_name) ->
cigogne@internal@cli_lib:create_action(
[<<"print"/utf8>>, <<"unapplied"/utf8>>],
<<"Print all unapplied migrations as SQL strings"/utf8>>,
begin
cigogne@internal@cli_lib:then_action(
config_decoder(Application_name),
fun(Config) ->
cigogne@internal@cli_lib:options({print_unapplied, Config})
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 18).
?DOC(false).
-spec get_action(binary(), list(binary())) -> {ok, cli_actions()} | {error, nil}.
get_action(Application_name, Args) ->
_pipe = cigogne@internal@cli_lib:command(<<"cigogne"/utf8>>),
_pipe@1 = cigogne@internal@cli_lib:with_description(
_pipe,
<<"Cigogne CLI"/utf8>>
),
_pipe@2 = cigogne@internal@cli_lib:add_action(
_pipe@1,
migrate_up_action(Application_name)
),
_pipe@3 = cigogne@internal@cli_lib:add_action(
_pipe@2,
migrate_down_action(Application_name)
),
_pipe@4 = cigogne@internal@cli_lib:add_action(
_pipe@3,
new_migration_action(Application_name)
),
_pipe@5 = cigogne@internal@cli_lib:add_action(
_pipe@4,
show_migrations_action(Application_name)
),
_pipe@6 = cigogne@internal@cli_lib:add_action(
_pipe@5,
migrate_up_all_action(Application_name)
),
_pipe@7 = cigogne@internal@cli_lib:add_action(
_pipe@6,
include_lib_action(Application_name)
),
_pipe@8 = cigogne@internal@cli_lib:add_action(
_pipe@7,
remove_lib_action(Application_name)
),
_pipe@9 = cigogne@internal@cli_lib:add_action(
_pipe@8,
update_config_action(Application_name)
),
_pipe@10 = cigogne@internal@cli_lib:add_action(
_pipe@9,
init_config_action()
),
_pipe@11 = cigogne@internal@cli_lib:add_action(
_pipe@10,
print_unapplied_action(Application_name)
),
cigogne@internal@cli_lib:run(_pipe@11, Args).