|
1 | 1 | defmodule Mix.Tasks.Deps.Clean do |
2 | 2 | use Mix.Task |
3 | 3 |
|
4 | | - @shortdoc "Remove dependencies' files" |
| 4 | + @shortdoc "Remove the given dependencies' files" |
5 | 5 | @recursive :both |
6 | 6 |
|
7 | 7 | @moduledoc """ |
8 | | - Clean dependencies. |
| 8 | + Remove the given dependencies' files. |
9 | 9 |
|
10 | | - By default, cleans all dependencies. A list of dependencies can |
11 | | - be given to clean specific ones. Clean does not unlock |
12 | | - the repositories, unless `--unlock` is given. |
| 10 | + Since this is a destructive action, cleaning of all dependencies |
| 11 | + can only happen by passing the `--all` command line option. |
| 12 | +
|
| 13 | + Clean does not unlock the repositories, unless `--unlock` is given. |
13 | 14 | """ |
14 | 15 |
|
15 | 16 | import Mix.Deps, only: [all: 0, by_name: 1, format_dep: 1] |
16 | 17 |
|
17 | 18 | def run(args) do |
18 | | - case OptionParser.parse(args, switches: [unlock: :boolean]) do |
19 | | - { opts, [] } -> do_clean all, opts |
20 | | - { opts, args } -> do_clean by_name(args), opts |
| 19 | + { opts, args } = OptionParser.parse(args, switches: [unlock: :boolean, all: :boolean]) |
| 20 | + |
| 21 | + cond do |
| 22 | + opts[:all] -> |
| 23 | + do_clean all, opts |
| 24 | + args != [] -> |
| 25 | + do_clean by_name(args), opts |
| 26 | + true -> |
| 27 | + raise Mix.Error, message: "mix deps.clean expects dependencies as arguments or " <> |
| 28 | + "the --all option to clean all dependencies" |
21 | 29 | end |
22 | 30 | end |
23 | 31 |
|
|
0 commit comments