@@ -8,9 +8,9 @@ defmodule Pow.MixProject do
8
8
app: :pow ,
9
9
version: @ version ,
10
10
elixir: "~> 1.6" ,
11
- elixirc_paths: elixirc_paths ( Mix . env ( ) ) ,
11
+ elixirc_paths: elixirc_paths ( Mix . env ( ) , optional_deps ( ) ) ,
12
12
start_permanent: Mix . env ( ) == :prod ,
13
- compilers: [ :phoenix ] ++ Mix . compilers ( ) ,
13
+ compilers: compilers ( optional_deps ( ) ) ,
14
14
deps: deps ( ) ,
15
15
16
16
# Hex
@@ -52,8 +52,53 @@ defmodule Pow.MixProject do
52
52
]
53
53
end
54
54
55
- defp elixirc_paths ( :test ) , do: [ "lib" , "test/support" ]
56
- defp elixirc_paths ( _ ) , do: [ "lib" ]
55
+ def elixirc_paths ( :test , _optional_deps ) , do: [ "lib" , "test/support" ]
56
+ def elixirc_paths ( _ , optional_deps ) do
57
+ case optional_deps_missing? ( optional_deps ) do
58
+ true -> paths_without_missing_optional_deps ( optional_deps )
59
+ false -> [ "lib" ]
60
+ end
61
+ end
62
+
63
+ def compilers ( optional_deps ) do
64
+ case phoenix_missing? ( optional_deps ) do
65
+ true -> [ :phoenix ] ++ Mix . compilers
66
+ _ -> Mix . compilers ( )
67
+ end
68
+ end
69
+
70
+ defp phoenix_missing? ( optional_deps ) do
71
+ Keyword . get ( optional_deps , :phoenix )
72
+ end
73
+
74
+ defp optional_deps_missing? ( optional_deps ) do
75
+ not Enum . empty? ( optional_deps_missing ( optional_deps ) )
76
+ end
77
+
78
+ defp optional_deps_missing ( optional_deps ) do
79
+ Enum . reject ( optional_deps , & elem ( & 1 , 1 ) )
80
+ end
81
+
82
+ defp optional_deps do
83
+ for dep <- [ :phoenix , :phoenix_html , :ecto , :plug ] do
84
+ case Mix.ProjectStack . peek ( ) do
85
+ % { config: config } -> { dep , Keyword . has_key? ( config [ :deps ] , dep ) }
86
+ _ -> { dep , true }
87
+ end
88
+ end
89
+ end
90
+
91
+ defp paths_without_missing_optional_deps ( optional_deps ) do
92
+ deps = optional_deps_missing ( optional_deps )
93
+
94
+ "lib/**/*.ex"
95
+ |> Path . wildcard ( )
96
+ |> Enum . reject ( & reject_deps_path? ( deps , & 1 ) )
97
+ end
98
+
99
+ defp reject_deps_path? ( deps , path ) do
100
+ Enum . any? ( deps , & String . contains? ( path , "/#{ elem ( & 1 , 0 ) } " ) )
101
+ end
57
102
58
103
defp package do
59
104
[
0 commit comments