@@ -119,8 +119,8 @@ defmodule Mix.Tasks.Format do
119
119
120
120
def run ( args ) do
121
121
{ opts , args } = OptionParser . parse! ( args , strict: @ switches )
122
- formatter_opts = eval_dot_formatter ( opts )
123
- formatter_opts = fetch_deps_opts ( formatter_opts )
122
+ { dot_formatter , formatter_opts } = eval_dot_formatter ( opts )
123
+ formatter_opts = fetch_deps_opts ( dot_formatter , formatter_opts )
124
124
125
125
args
126
126
|> expand_args ( formatter_opts )
@@ -130,42 +130,32 @@ defmodule Mix.Tasks.Format do
130
130
end
131
131
132
132
defp eval_dot_formatter ( opts ) do
133
- case dot_formatter ( opts ) do
134
- { :ok , dot_formatter } -> eval_file_with_keyword_list ( dot_formatter )
135
- :error -> [ ]
136
- end
137
- end
138
-
139
- defp dot_formatter ( opts ) do
140
133
cond do
141
- dot_formatter = opts [ :dot_formatter ] -> { :ok , dot_formatter }
142
- File . regular? ( ".formatter.exs" ) -> { :ok , ".formatter.exs" }
143
- true -> :error
134
+ dot_formatter = opts [ :dot_formatter ] ->
135
+ { dot_formatter , eval_file_with_keyword_list ( dot_formatter ) }
136
+
137
+ File . regular? ( ".formatter.exs" ) ->
138
+ { ".formatter.exs" , eval_file_with_keyword_list ( ".formatter.exs" ) }
139
+
140
+ true ->
141
+ { ".formatter.exs" , [ ] }
144
142
end
145
143
end
146
144
147
145
# This function reads exported configuration from the imported dependencies and deals with
148
146
# caching the result of reading such configuration in a manifest file.
149
- defp fetch_deps_opts ( formatter_opts ) do
147
+ defp fetch_deps_opts ( dot_formatter , formatter_opts ) do
150
148
deps = Keyword . get ( formatter_opts , :import_deps , [ ] )
151
149
152
150
cond do
153
151
deps == [ ] ->
154
152
formatter_opts
155
153
156
154
is_list ( deps ) ->
157
- # Since we have dependencies listed, we write the manifest even if those dependencies
158
- # don't export anything so that we avoid lookups everytime.
155
+ # Since we have dependencies listed, we write the manifest even if those
156
+ # dependencies don't export anything so that we avoid lookups everytime.
159
157
deps_manifest = Path . join ( Mix.Project . manifest_path ( ) , @ deps_manifest )
160
-
161
- dep_parenless_calls =
162
- if deps_dot_formatters_stale? ( deps_manifest ) do
163
- dep_parenless_calls = eval_deps_opts ( deps )
164
- write_deps_manifest ( deps_manifest , dep_parenless_calls )
165
- dep_parenless_calls
166
- else
167
- read_deps_manifest ( deps_manifest )
168
- end
158
+ dep_parenless_calls = maybe_cache_eval_deps_opts ( dot_formatter , deps_manifest , deps )
169
159
170
160
Keyword . update (
171
161
formatter_opts ,
@@ -179,8 +169,21 @@ defmodule Mix.Tasks.Format do
179
169
end
180
170
end
181
171
182
- defp deps_dot_formatters_stale? ( deps_manifest ) do
183
- Mix.Utils . stale? ( [ ".formatter.exs" | Mix.Project . config_files ( ) ] , [ deps_manifest ] )
172
+ defp maybe_cache_eval_deps_opts ( dot_formatter , deps_manifest , deps ) do
173
+ cond do
174
+ dot_formatter != ".formatter.exs" ->
175
+ eval_deps_opts ( deps )
176
+
177
+ deps_dot_formatters_stale? ( dot_formatter , deps_manifest ) ->
178
+ write_deps_manifest ( deps_manifest , eval_deps_opts ( deps ) )
179
+
180
+ true ->
181
+ read_deps_manifest ( deps_manifest )
182
+ end
183
+ end
184
+
185
+ defp deps_dot_formatters_stale? ( dot_formatter , deps_manifest ) do
186
+ Mix.Utils . stale? ( [ dot_formatter | Mix.Project . config_files ( ) ] , [ deps_manifest ] )
184
187
end
185
188
186
189
defp read_deps_manifest ( deps_manifest ) do
@@ -190,6 +193,7 @@ defmodule Mix.Tasks.Format do
190
193
defp write_deps_manifest ( deps_manifest , parenless_calls ) do
191
194
File . mkdir_p! ( Path . dirname ( deps_manifest ) )
192
195
File . write! ( deps_manifest , :erlang . term_to_binary ( parenless_calls ) )
196
+ parenless_calls
193
197
end
194
198
195
199
defp eval_deps_opts ( deps ) do
0 commit comments