@ -70,33 +70,56 @@ example(Alias) ->
" rebar3 " ++ atom_to_list ( Alias ) .
desc ( Cmds ) - >
" Equivalent to running: rebar3 do " ++
rebar_string : join ( lists : map ( fun ( { Cmd , Args } ) - >
atom_to_list ( Cmd ) ++ " " ++ Args ;
( Cmd ) - >
atom_to_list ( Cmd )
end , Cmds ) , " , " ) .
" Equivalent to running: rebar3 do "
++ rebar_string : join ( lists : map ( fun to_desc / 1 , Cmds ) , " , " ) .
to_desc ( { Cmd , Args } ) - >
atom_to_list ( Cmd ) ++ " " ++ Args ;
to_desc ( Cmd ) - >
atom_to_list ( Cmd ) .
module ( Name ) - >
{ attribute , 1 , module , Name } .
{ attribute , 1 , module , Name } .
exports ( ) - >
{ attribute , 1 , export , [ { do , 1 } ] } .
{ attribute , 1 , export , [ { do , 1 } ] } .
do_func ( Cmds ) - >
{ function , 1 , do , 1 ,
[ { clause , 1 ,
[ { var , 1 , 'State' } ] ,
{ function , 1 , do , 1 ,
[ { clause , 1 ,
[ { var , 1 , 'State' } ] ,
[ ] ,
[ { call , 1 ,
{ remote , 1 , { atom , 1 , rebar_prv_do } , { atom , 1 , do_tasks } } ,
[ to_args ( Cmds ) , { var , 1 , 'State' } ] } ] } ] } .
to_args ( [ ] ) - >
{ nil , 1 } ;
to_args ( [ { Cmd , Args } | Rest ] ) - >
{ cons , 1 , { tuple , 1 , [ { string , 1 , atom_to_list ( Cmd ) } , { string , 1 , Args } ] } , to_args ( Rest ) } ;
to_args ( [ Cmd | Rest ] ) - >
{ cons , 1 , { tuple , 1 , [ { string , 1 , atom_to_list ( Cmd ) } , { nil , 1 } ] } , to_args ( Rest ) } .
[ { call , 1 ,
{ remote , 1 , { atom , 1 , rebar_prv_do } , { atom , 1 , do_tasks } } ,
[ make_args ( Cmds ) , { var , 1 , 'State' } ] } ] } ] } .
make_args ( Cmds ) - >
make_list (
lists : map ( fun make_tuple / 1 ,
lists : map ( fun make_arg / 1 , Cmds ) ) ) .
make_arg ( { Cmd , Args } ) - >
{ make_string ( Cmd ) , make_list ( [ make_string ( A ) | | A < - split_args ( Args ) ] ) } ;
make_arg ( Cmd ) - >
{ make_string ( Cmd ) , make_list ( [ ] ) } .
make_tuple ( Tuple ) - >
{ tuple , 1 , tuple_to_list ( Tuple ) } .
make_list ( List ) - >
lists : foldr (
fun ( Elem , Acc ) - > { cons , 1 , Elem , Acc } end ,
{ nil , 1 } ,
List ) .
make_string ( Atom ) when is_atom ( Atom ) - >
make_string ( atom_to_list ( Atom ) ) ;
make_string ( String ) when is_list ( String ) - >
{ string , 1 , String } .
% % In case someone used the long option format , the option needs to get
% % separated from its value .
split_args ( Args ) - >
rebar_string : lexemes (
lists : map ( fun ( $= ) - > 32 ; ( C ) - > C end , Args ) ,
" " ) .