@@ -119,8 +119,8 @@ defmodule Mix.Tasks.Format do
119119
120120 def run ( args ) do
121121 { 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 )
124124
125125 args
126126 |> expand_args ( formatter_opts )
@@ -130,42 +130,32 @@ defmodule Mix.Tasks.Format do
130130 end
131131
132132 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
140133 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" , [ ] }
144142 end
145143 end
146144
147145 # This function reads exported configuration from the imported dependencies and deals with
148146 # 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
150148 deps = Keyword . get ( formatter_opts , :import_deps , [ ] )
151149
152150 cond do
153151 deps == [ ] ->
154152 formatter_opts
155153
156154 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.
159157 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 )
169159
170160 Keyword . update (
171161 formatter_opts ,
@@ -179,8 +169,21 @@ defmodule Mix.Tasks.Format do
179169 end
180170 end
181171
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 ] )
184187 end
185188
186189 defp read_deps_manifest ( deps_manifest ) do
@@ -190,6 +193,7 @@ defmodule Mix.Tasks.Format do
190193 defp write_deps_manifest ( deps_manifest , parenless_calls ) do
191194 File . mkdir_p! ( Path . dirname ( deps_manifest ) )
192195 File . write! ( deps_manifest , :erlang . term_to_binary ( parenless_calls ) )
196+ parenless_calls
193197 end
194198
195199 defp eval_deps_opts ( deps ) do
0 commit comments