Packages

A database migrations tool for Erlang

Current section

Files

Jump to
erlembic src erlembic.erl
Raw

src/erlembic.erl

-module(erlembic).
%% API exports
-export([main/1]).
%%====================================================================
%% API functions
%%====================================================================
%% escript Entry point
main(Args) ->
argparse:run(Args, cli(), #{progname => erlembic}),
erlang:halt(0).
%%====================================================================
%% Internal functions
%%====================================================================
%% Command Specification
cli() ->
#{
commands => #{
"init" => #{
arguments => [
#{
name => directory,
type => string,
help => "Name of target directory to set the environment.",
default => "erlembic"
}
],
help => "Initialize erlembic environment.",
handler =>
fun(#{directory := Directory}) ->
erlembic_init:run(Directory)
end
},
"revision" => #{
arguments => [
#{
name => name,
type => string,
help => "Name of the SQL file for new migration script"
}
],
help => "Create a new revision file.",
handler =>
fun(#{name := Name}) ->
erlembic_revision:run(Name)
end
},
"upgrade" => #{
arguments => [
#{
name => revision,
type => integer,
help => "Number of the migration script",
default => "HEAD"
}
],
help => "Upgrade to a later version.",
handler =>
fun(#{revision := Revision}) ->
erlembic_upgrade:run(Revision)
end
},
"downgrade" => #{
arguments => [
#{
name => revision,
type => integer,
help => "Number of the migration script",
default => 0
}
],
help => "Revert to a previous version.",
handler =>
fun(#{revision := Revision}) ->
erlembic_downgrade:run(Revision)
end
}
}
}.