-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", 94). ?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", 118). ?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", 40). ?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", 58). ?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", 76). ?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", 87). ?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", 29). ?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).