@@ -83,35 +83,40 @@ get_template_vars(TemplateTerms, State) ->
83
83
{_ , Value } -> Value ;
84
84
false -> []
85
85
end ,
86
- override_vars (Vars , override_vars (global_variables (State ), default_variables ())).
86
+ override_vars (Vars , override_vars (global_variables (State ), default_variables (State ))).
87
87
88
88
% % Provide a way to merge a set of variables with another one. The left-hand
89
89
% % set of variables takes precedence over the right-hand set.
90
90
% % In the case where left-hand variable description contains overriden defaults, but
91
91
% % the right-hand one contains additional data such as documentation, the resulting
92
92
% % variable description will contain the widest set of information possible.
93
- override_vars ([], General ) -> General ;
94
- override_vars ([{Var , Default } | Rest ], General ) ->
95
- case lists :keytake (Var , 1 , General ) of
96
- {value , {Var , _Default , Doc }, NewGeneral } ->
97
- [{Var , Default , Doc } | override_vars (Rest , NewGeneral )];
98
- {value , {Var , _Default }, NewGeneral } ->
99
- [{Var , Default } | override_vars (Rest , NewGeneral )];
100
- false ->
101
- [{Var , Default } | override_vars (Rest , General )]
102
- end ;
103
- override_vars ([{Var , Default , Doc } | Rest ], General ) ->
104
- [{Var , Default , Doc } | override_vars (Rest , lists :keydelete (Var , 1 , General ))].
93
+ override_vars (Vars , General ) ->
94
+ {NewGeneral , VarsAcc } =
95
+ lists :foldl (fun ({Var , Default }, {General1 , Acc }) ->
96
+ case lists :keytake (Var , 1 , General1 ) of
97
+ {value , {Var , _Default , Doc }, NewGeneral1 } ->
98
+ {NewGeneral1 , [{Var , expand_path (Default , General1 ), Doc } | Acc ]};
99
+ {value , {Var , _Default }, NewGeneral1 } ->
100
+ {NewGeneral1 , [{Var , expand_path (Default , General1 )}]};
101
+ false ->
102
+ {General1 , [{Var , expand_path (Default , General1 )} | Acc ]}
103
+ end ;
104
+ ({Var , Default , Doc }, {General1 , Acc }) ->
105
+ {lists :keydelete (Var , 1 , General1 ), [{Var , rebar_utils :to_list (render (Default , General1 )), Doc } | Acc ]}
106
+ end , {General , []}, Vars ),
107
+ NewGeneral ++ VarsAcc .
105
108
106
109
% % Default variables, generated dynamically.
107
- default_variables () ->
110
+ default_variables (State ) ->
111
+ RootName = filename :basename (filename :rootname (rebar_dir :root_dir (State ))),
108
112
{DefaultAuthor , DefaultEmail } = default_author_and_email (),
109
113
{{Y ,M ,D },{H ,Min ,S }} = calendar :universal_time (),
110
114
[{date , lists :flatten (io_lib :format (" ~4..0w -~2..0w -~2..0w " ,[Y ,M ,D ]))},
111
115
{datetime , lists :flatten (io_lib :format (" ~4..0w -~2..0w -~2..0w T~2..0w :~2..0w :~2..0w +00:00" ,[Y ,M ,D ,H ,Min ,S ]))},
112
116
{author_name , DefaultAuthor },
113
117
{author_email , DefaultEmail },
114
118
{copyright_year , integer_to_list (Y )},
119
+ {root_name , RootName },
115
120
{apps_dir , " apps" , " Directory where applications will be created if needed" }].
116
121
117
122
default_author_and_email () ->
0 commit comments