Current section
Files
Jump to
Current section
Files
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/1]).
-export_type([cli_actions/0, config_options/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, config_options(), integer()} |
{migrate_down, config_options(), integer()} |
{show_migrations, config_options()} |
{migrate_to_last, config_options()} |
{new_migration, gleam@option:option(binary()), binary()}.
-type config_options() :: {config_options,
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(integer()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
boolean(),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary())}.
-file("src/cigogne/internal/cli.gleam", 95).
?DOC(false).
-spec new_migration_action() -> cigogne@internal@cli_lib:action(cli_actions()).
new_migration_action() ->
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:flag(
<<"folder"/utf8>>,
[<<"F"/utf8>>],
<<"FOLDER"/utf8>>,
<<"Folder to store the migration (default: priv/migrations)"/utf8>>,
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_string/1},
fun(Folder) ->
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, Folder, Name}
)
end
)
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 119).
?DOC(false).
-spec config_decoder() -> cigogne@internal@cli_lib:action_decoder(config_options()).
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(Db_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(Db_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(Db_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(Db_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(Db_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(Db_name) ->
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(
<<"migration-table"/utf8>>,
[<<"T"/utf8>>],
<<"TABLE"/utf8>>,
<<"Migration table name (default: _migrations)"/utf8>>,
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_string/1},
fun(
Migration_table
) ->
cigogne@internal@cli_lib:flag(
<<"no-gen-schema"/utf8>>,
[<<"G"/utf8>>],
<<""/utf8>>,
<<"Disable generation schema file (default: false)"/utf8>>,
{flag_decoder,
false,
fun cigogne@internal@cli_lib:decode_bool/1},
fun(
No_gen_schema
) ->
cigogne@internal@cli_lib:flag(
<<"schema-filename"/utf8>>,
[<<"F"/utf8>>],
<<"FILENAME"/utf8>>,
<<"Schema filename to generate (default: ./sql.schema)"/utf8>>,
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_string/1},
fun(
Schema_filename
) ->
cigogne@internal@cli_lib:flag(
<<"migration-folder"/utf8>>,
[<<"M"/utf8>>],
<<"FOLDER"/utf8>>,
<<"Folder to store migrations (default: priv/migrations)"/utf8>>,
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_string/1},
fun(
Migration_folder
) ->
cigogne@internal@cli_lib:flag(
<<"migration-pattern"/utf8>>,
[<<"m"/utf8>>],
<<"PATTERN"/utf8>>,
<<"Pattern to find migration scripts (default: *.sql)"/utf8>>,
{flag_decoder,
none,
fun cigogne@internal@cli_lib:decode_string/1},
fun(
Migration_pattern
) ->
cigogne@internal@cli_lib:options(
{config_options,
Db_url,
Db_host,
Db_user,
Db_password,
Db_port,
Db_name,
Schema,
Migration_table,
not No_gen_schema,
Schema_filename,
Migration_folder,
Migration_pattern}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 41).
?DOC(false).
-spec migrate_up_action() -> cigogne@internal@cli_lib:action(cli_actions()).
migrate_up_action() ->
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(),
fun(Config) ->
{migrate_up,
Config,
begin
_pipe = Count,
gleam@option:unwrap(_pipe, 1)
end}
end
)
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 59).
?DOC(false).
-spec migrate_down_action() -> cigogne@internal@cli_lib:action(cli_actions()).
migrate_down_action() ->
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(),
fun(Config) ->
{migrate_down,
Config,
begin
_pipe = Count,
gleam@option:unwrap(_pipe, 1)
end}
end
)
end
)
end
).
-file("src/cigogne/internal/cli.gleam", 77).
?DOC(false).
-spec show_migrations_action() -> cigogne@internal@cli_lib:action(cli_actions()).
show_migrations_action() ->
cigogne@internal@cli_lib:create_action(
[<<"show"/utf8>>],
<<"Show the last / currently applied migration"/utf8>>,
begin
cigogne@internal@cli_lib:map_action(
config_decoder(),
fun(Config) -> {show_migrations, Config} end
)
end
).
-file("src/cigogne/internal/cli.gleam", 88).
?DOC(false).
-spec migrate_to_last_action() -> cigogne@internal@cli_lib:action(cli_actions()).
migrate_to_last_action() ->
cigogne@internal@cli_lib:create_action(
[<<"last"/utf8>>],
<<"Apply all non-applied migrations"/utf8>>,
begin
cigogne@internal@cli_lib:map_action(
config_decoder(),
fun(Config) -> {migrate_to_last, Config} end
)
end
).
-file("src/cigogne/internal/cli.gleam", 30).
?DOC(false).
-spec get_action(list(binary())) -> {ok, cli_actions()} | {error, nil}.
get_action(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()),
_pipe@3 = cigogne@internal@cli_lib:add_action(
_pipe@2,
migrate_down_action()
),
_pipe@4 = cigogne@internal@cli_lib:add_action(
_pipe@3,
new_migration_action()
),
_pipe@5 = cigogne@internal@cli_lib:add_action(
_pipe@4,
show_migrations_action()
),
_pipe@6 = cigogne@internal@cli_lib:add_action(
_pipe@5,
migrate_to_last_action()
),
cigogne@internal@cli_lib:run(_pipe@6, Args).