@@ -19,7 +19,7 @@ defmodule Mix.Tasks.Compile.App do
19
19
http://www.erlang.org/doc/design_principles/applications.html
20
20
21
21
## Configuration
22
-
22
+
23
23
* `:app` - The application name as a binary (required)
24
24
* `:version` - The application version as a binary (required)
25
25
@@ -86,51 +86,57 @@ defmodule Mix.Tasks.Compile.App do
86
86
87
87
defp ensure_correct_properties ( app , properties ) do
88
88
properties = Keyword . from_enum ( properties )
89
- properties = Keyword . put properties , :description ,
89
+ properties = Keyword . put properties , :description ,
90
90
to_char_list ( properties [ :description ] || app )
91
91
properties = Keyword . put properties , :registered , ( properties [ :registered ] || [ ] )
92
92
validate_properties ( properties )
93
93
properties
94
94
end
95
95
96
96
defp validate_properties ( properties ) do
97
- unless nil? ( properties [ :description ] ) or is_list ( properties [ :description ] ) do
98
- raise ( Mix.Error , message: "Application description (:description) is not a character list (got #{ inspect properties [ :description ] } )" )
99
- end
100
- unless nil? ( properties [ :id ] ) or is_list ( properties [ :id ] ) do
101
- raise ( Mix.Error , message: "Application id (:id) is not a character list (got #{ inspect properties [ :id ] } instead)" )
102
- end
103
- unless nil? ( properties [ :vsn ] ) or is_list ( properties [ :vsn ] ) do
104
- raise ( Mix.Error , message: "Application vsn (:vsn) is not a character list (got #{ inspect properties [ :vsn ] } instead)" )
105
- end
106
- unless nil? ( properties [ :modules ] ) or ( is_list ( properties [ :modules ] ) and Enum . all? ( properties [ :modules ] , is_atom ( & 1 ) ) ) do
107
- raise ( Mix.Error , message: "Application modules (:modules) should be a list of atoms (got #{ inspect properties [ :modules ] } instead)" )
108
- end
109
- unless nil? ( properties [ :maxT ] ) or properties [ :maxT ] == :infinity or is_integer ( properties [ :maxT ] ) do
110
- raise ( Mix.Error , message: "Application maximum time (:maxT) is not an integer or :infinity (got #{ inspect properties [ :maxT ] } instead)" )
111
- end
112
- unless nil? ( properties [ :registered ] ) or is_list ( properties [ :registered ] ) and ( Enum . all? ( properties [ :registered ] , is_atom ( & 1 ) ) ) do
113
- raise ( Mix.Error , message: "Application registered processes (:registered) should be a list of atoms (got #{ inspect properties [ :registered ] } instead)" )
114
- end
115
- unless nil? ( properties [ :included_applications ] ) or ( is_list ( properties [ :included_applications ] ) and Enum . all? ( properties [ :included_applications ] , is_atom ( & 1 ) ) ) do
116
- raise ( Mix.Error , message: "Application included applications (:included_applications) should be a list of atoms (got #{ inspect properties [ :included_applications ] } instead)" )
117
- end
118
- unless nil? ( properties [ :applications ] ) or ( is_list ( properties [ :applications ] ) and Enum . all? ( properties [ :applications ] , is_atom ( & 1 ) ) ) do
119
- raise ( Mix.Error , message: "Application dependencies (:applications) should be a list of atoms (got #{ inspect properties [ :applications ] } instead)" )
120
- end
121
- unless nil? ( properties [ :env ] ) or ( Keyword . keyword? ( properties [ :env ] ) ) do
122
- raise ( Mix.Error , message: "Application dependencies (:env) should be a keyword list (got #{ inspect properties [ :env ] } instead)" )
123
- end
124
- unless nil? ( properties [ :mod ] ) do
125
- case properties [ :mod ] do
126
- [ ] -> :ok
127
- { module , _start_args } when is_atom ( module ) -> :ok
128
- other ->
129
- raise ( Mix.Error , message: "Application callback module (:mod) should be either [] or {module, start_args} (got #{ inspect properties [ :mod ] } instead)" )
130
- end
131
- end
132
- unless nil? ( properties [ :start_phases ] ) or ( Keyword . keyword? ( properties [ :start_phases ] ) ) do
133
- raise ( Mix.Error , message: "Application start phases (:start_phases) should be a keyword list (got #{ inspect properties [ :start_phases ] } instead)" )
97
+ Enum . each properties , fn
98
+ { :description , value } ->
99
+ unless is_list ( value ) , do:
100
+ invalid "Application description (:description) is not a character list (got #{ inspect value } )"
101
+ { :id , value } ->
102
+ unless is_list ( value ) , do:
103
+ invalid "Application id (:id) is not a character list (got #{ inspect value } instead)"
104
+ { :vsn , value } ->
105
+ unless is_list ( value ) , do:
106
+ invalid "Application vsn (:vsn) is not a character list (got #{ inspect value } instead)"
107
+ { :maxT , value } ->
108
+ unless value == :infinity or is_integer ( value ) , do:
109
+ invalid "Application maximum time (:maxT) is not an integer or :infinity (got #{ inspect value } instead)"
110
+ { :modules , value } ->
111
+ unless is_list ( value ) and Enum . all? ( value , is_atom ( & 1 ) ) , do:
112
+ invalid "Application modules (:modules) should be a list of atoms (got #{ inspect value } instead)"
113
+ { :registered , value } ->
114
+ unless is_list ( value ) and Enum . all? ( value , is_atom ( & 1 ) ) , do:
115
+ invalid "Application registered processes (:registered) should be a list of atoms (got #{ inspect value } instead)"
116
+ { :included_applications , value } ->
117
+ unless is_list ( value ) and Enum . all? ( value , is_atom ( & 1 ) ) , do:
118
+ invalid "Application included applications (:included_applications) should be a list of atoms (got #{ inspect value } instead)"
119
+ { :applications , value } ->
120
+ unless is_list ( value ) and Enum . all? ( value , is_atom ( & 1 ) ) , do:
121
+ invalid "Application dependencies (:applications) should be a list of atoms (got #{ inspect value } instead)"
122
+ { :env , value } ->
123
+ unless Keyword . keyword? ( value ) , do:
124
+ invalid "Application dependencies (:env) should be a keyword list (got #{ inspect value } instead)"
125
+ { :start_phases , value } ->
126
+ unless Keyword . keyword? ( value ) , do:
127
+ invalid "Application start phases (:start_phases) should be a keyword list (got #{ inspect value } instead)"
128
+ { :mod , [ ] } ->
129
+ :ok
130
+ { :mod , { module , _args } } when is_atom ( module ) ->
131
+ :ok
132
+ { :mod , value } ->
133
+ invalid "Application callback module (:mod) should be either [] or {module, start_args} (got #{ inspect value } instead)"
134
+ { key , value } ->
135
+ invalid "Unknown application key #{ inspect key } with value #{ inspect value } "
134
136
end
135
137
end
138
+
139
+ defp invalid ( message ) do
140
+ raise Mix.Error , message: message
141
+ end
136
142
end
0 commit comments