Skip to content

Commit b5fce07

Browse files
author
José Valim
committed
Do not raise if a dependency can't be found, closes #1052
1 parent d722685 commit b5fce07

File tree

7 files changed

+21
-21
lines changed

7 files changed

+21
-21
lines changed

lib/mix/lib/mix/deps.ex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ defmodule Mix.Deps do
6666

6767
@doc """
6868
Receives a list of deps names and returns deps records.
69-
Raises an error if the dependency does not exist.
69+
Logs a message if the dependency could not be found.
7070
"""
71-
def by_name!(given, all_deps // all) do
71+
def by_name(given, all_deps // all) do
7272
# Ensure all apps are atoms
7373
apps = Enum.map given, fn(app) ->
7474
if is_binary(app), do: binary_to_atom(app), else: app
@@ -81,7 +81,7 @@ defmodule Mix.Deps do
8181
index = Mix.Dep.__index__(:app)
8282
Enum.each apps, fn(app) ->
8383
unless List.keyfind(deps, app, index) do
84-
raise Mix.Error, message: "unknown dependency #{app} for env #{Mix.env}"
84+
Mix.shell.info message: "unknown dependency #{app} for env #{Mix.env}"
8585
end
8686
end
8787

lib/mix/lib/mix/project.ex

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,9 +259,8 @@ defmodule Mix.Project do
259259
end
260260

261261
unless :digraph_utils.is_acyclic(graph) do
262-
Mix.shell.error "Could not dependency sort umbrella projects. " <>
262+
raise Mix.Error, message: "Could not dependency sort umbrella projects. " <>
263263
"There are cycles in the dependency graph."
264-
exit(1)
265264
end
266265

267266
vertices = :digraph_utils.topsort(graph)

lib/mix/lib/mix/tasks/deps.clean.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ defmodule Mix.Tasks.Deps.Clean do
1212
the repositories, unless --unlock is given.
1313
"""
1414

15-
import Mix.Deps, only: [all: 0, by_name!: 1, format_dep: 1]
15+
import Mix.Deps, only: [all: 0, by_name: 1, format_dep: 1]
1616

1717
def run(args) do
1818
case OptionParser.parse(args, switches: [unlock: :boolean]) do
1919
{ opts, [] } -> do_clean all, opts
20-
{ opts, args } -> do_clean by_name!(args), opts
20+
{ opts, args } -> do_clean by_name(args), opts
2121
end
2222
end
2323

lib/mix/lib/mix/tasks/deps.compile.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ defmodule Mix.Tasks.Deps.Compile do
2424
2525
"""
2626

27-
import Mix.Deps, only: [ all: 0, available?: 1, by_name!: 2, compile_paths: 1,
27+
import Mix.Deps, only: [ all: 0, available?: 1, by_name: 2, compile_paths: 1,
2828
depending: 2, format_dep: 1, make?: 1, mix?: 1, rebar?: 1 ]
2929

3030
def run(args) do
@@ -33,7 +33,7 @@ defmodule Mix.Tasks.Deps.Compile do
3333
do_compile Enum.filter(all, available?(&1))
3434
{ _, tail } ->
3535
all_deps = all
36-
deps = by_name!(tail, all_deps)
36+
deps = by_name(tail, all_deps)
3737
do_compile(deps ++ depending(deps, all_deps))
3838
end
3939
end

lib/mix/lib/mix/tasks/deps.get.ex

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,18 @@ defmodule Mix.Tasks.Deps.Get do
1010
1111
## Command line options
1212
13-
* `--no-compile` skip compilation of dependencies
14-
* `--quiet` only output error messages or if an action was performed
13+
* `--no-compile` - skip compilation of dependencies
14+
* `--quiet` - do not output success message
15+
1516
"""
1617

17-
import Mix.Deps, only: [all: 2, by_name!: 1, format_dep: 1, check_lock: 2, out_of_date?: 1]
18+
import Mix.Deps, only: [all: 2, by_name: 1, format_dep: 1, check_lock: 2, out_of_date?: 1]
1819

1920
def run(args) do
2021
{ opts, rest } = OptionParser.parse(args, switches: [no_compile: :boolean, quiet: :boolean])
2122

2223
if rest != [] do
23-
{ _, acc } = Enum.map_reduce by_name!(rest), init, deps_getter(&1, &2)
24+
{ _, acc } = Enum.map_reduce by_name(rest), init, deps_getter(&1, &2)
2425
else
2526
acc = all(init, deps_getter(&1, &2))
2627
end

lib/mix/lib/mix/tasks/deps.update.ex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,18 @@ defmodule Mix.Tasks.Deps.Update do
1313
1414
## Command line options
1515
16-
* `--no-compile` skip compilation of dependencies
16+
* `--no-compile` - skip compilation of dependencies
1717
"""
1818

19-
import Mix.Deps, only: [ all: 0, all: 2, available?: 1, by_name!: 2,
19+
import Mix.Deps, only: [ all: 0, all: 2, available?: 1, by_name: 2,
2020
depending: 2, format_dep: 1 ]
2121

2222
def run(args) do
2323
{ opts, rest } = OptionParser.parse(args, switches: [no_compile: :boolean])
2424

2525
if rest != [] do
2626
all_deps = all
27-
deps = Enum.map by_name!(rest, all_deps), check_unavailable!(&1)
27+
deps = Enum.map by_name(rest, all_deps), check_unavailable!(&1)
2828
deps = deps ++ depending(deps, all_deps)
2929
{ _, acc } = Enum.map_reduce deps, init, deps_updater(&1, &2)
3030
else

lib/mix/lib/mix/tasks/escriptize.ex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,11 @@ defmodule Mix.Tasks.Escriptize do
6161

6262
cond do
6363
!script_name ->
64-
Mix.shell.error "Could not generate escript, no name given, set :escript_name " <>
65-
"or :app in the project settings"
66-
:noop
64+
raise Mix.Error, message: "Could not generate escript, no name given, " <>
65+
"set :escript_name or :app in the project settings"
6766
beams == [] ->
68-
Mix.shell.error "Could not generate escript #{filename}, no beam files available"
69-
:noop
67+
raise Mix.Error, message: "Could not generate escript #{filename}, " <>
68+
"no beam files available"
7069
force or Mix.Utils.stale?(beams, [filename]) ->
7170
files = gen_main(script_name, project[:escript_main_module])
7271
files = files ++ all_files()
@@ -98,6 +97,7 @@ defmodule Mix.Tasks.Escriptize do
9897

9998
set_perms(filename)
10099
Mix.shell.info "Generated escript #{filename}"
100+
:ok
101101
true ->
102102
:noop
103103
end

0 commit comments

Comments
 (0)