@@ -20,7 +20,8 @@ defmodule Mix.Tasks.Deps.Clean do
20
20
is given.
21
21
"""
22
22
23
- @ switches [ unlock: :boolean , all: :boolean , only: :string , unused: :boolean ]
23
+ @ switches [ unlock: :boolean , all: :boolean , only: :string , unused: :boolean ,
24
+ build: :boolean ]
24
25
25
26
@ spec run ( OptionParser . argv ) :: :ok
26
27
def run ( args ) do
@@ -32,20 +33,19 @@ defmodule Mix.Tasks.Deps.Clean do
32
33
|> Path . join ( "#{ opts [ :only ] || :* } /lib" )
33
34
deps = Mix.Project . deps_path
34
35
35
- cond do
36
- opts [ :all ] ->
37
- checked_deps ( build , deps ) |> do_clean ( build , deps )
38
- opts [ :unused ] ->
39
- checked_deps ( build , deps ) |> filter_loaded ( opts ) |> do_clean ( build , deps )
40
- apps != [ ] ->
41
- do_clean ( apps , build , deps )
36
+ apps_to_clean = cond do
37
+ opts [ :all ] -> checked_deps ( build , deps )
38
+ opts [ :unused ] -> checked_deps ( build , deps ) |> filter_loaded ( opts )
39
+ apps != [ ] -> apps
42
40
true ->
43
41
Mix . raise "\" mix deps.clean\" expects dependencies as arguments or " <>
44
42
"a flag indicating which dependencies to clean. " <>
45
43
"The --all option will clean all dependencies while " <>
46
44
"the --unused option cleans unused dependencies"
47
45
end
48
46
47
+ do_clean ( apps_to_clean , build , deps , opts [ :build ] )
48
+
49
49
if opts [ :unlock ] do
50
50
Mix.Task . run "deps.unlock" , args
51
51
else
@@ -69,7 +69,7 @@ defmodule Mix.Tasks.Deps.Clean do
69
69
Enum . reject ( apps , & ( & 1 in load_deps ) )
70
70
end
71
71
72
- defp do_clean ( apps , build , deps ) do
72
+ defp do_clean ( apps , build , deps , build_only ) do
73
73
shell = Mix . shell
74
74
75
75
Enum . each apps , fn ( app ) ->
@@ -80,9 +80,11 @@ defmodule Mix.Tasks.Deps.Clean do
80
80
|> Path . wildcard
81
81
|> Enum . each ( & File . rm_rf! / 1 )
82
82
83
- deps
84
- |> Path . join ( to_string ( app ) )
85
- |> File . rm_rf!
83
+ unless build_only do
84
+ deps
85
+ |> Path . join ( to_string ( app ) )
86
+ |> File . rm_rf!
87
+ end
86
88
end
87
89
end
88
90
end
0 commit comments