@@ -1118,8 +1118,10 @@ defmodule System do
1118
1118
end
1119
1119
1120
1120
defp do_cmd ( port_init , base_opts , opts ) do
1121
+ { use_stdio? , opts } = Keyword . pop ( opts , :use_stdio , true )
1122
+
1121
1123
{ into , line , opts } =
1122
- cmd_opts ( opts , [ :use_stdio , : exit_status, :binary , :hide ] ++ base_opts , "" , false )
1124
+ cmd_opts ( opts , [ :exit_status , :binary , :hide ] ++ base_opts , "" , false , use_stdio? )
1123
1125
1124
1126
{ initial , fun } = Collectable . into ( into )
1125
1127
@@ -1168,46 +1170,40 @@ defmodule System do
1168
1170
end
1169
1171
end
1170
1172
1171
- defp cmd_opts ( [ { :into , any } | t ] , opts , _into , line ) ,
1172
- do: cmd_opts ( t , opts , any , line )
1173
-
1174
- defp cmd_opts ( [ { :cd , bin } | t ] , opts , into , line ) when is_binary ( bin ) ,
1175
- do: cmd_opts ( t , [ { :cd , bin } | opts ] , into , line )
1173
+ defp cmd_opts ( [ { :into , any } | t ] , opts , _into , line , stdio? ) ,
1174
+ do: cmd_opts ( t , opts , any , line , stdio? )
1176
1175
1177
- defp cmd_opts ( [ { :arg0 , bin } | t ] , opts , into , line ) when is_binary ( bin ) ,
1178
- do: cmd_opts ( t , [ { :arg0 , bin } | opts ] , into , line )
1176
+ defp cmd_opts ( [ { :cd , bin } | t ] , opts , into , line , stdio? ) when is_binary ( bin ) ,
1177
+ do: cmd_opts ( t , [ { :cd , bin } | opts ] , into , line , stdio? )
1179
1178
1180
- defp cmd_opts ( [ { :stderr_to_stdout , true } | t ] , opts , into , line ) ,
1181
- do: cmd_opts ( t , [ :stderr_to_stdout | opts ] , into , line )
1179
+ defp cmd_opts ( [ { :arg0 , bin } | t ] , opts , into , line , stdio? ) when is_binary ( bin ) ,
1180
+ do: cmd_opts ( t , [ { :arg0 , bin } | opts ] , into , line , stdio? )
1182
1181
1183
- defp cmd_opts ( [ { :stderr_to_stdout , false } | t ] , opts , into , line ) ,
1184
- do: cmd_opts ( t , opts , into , line )
1182
+ defp cmd_opts ( [ { :stderr_to_stdout , true } | t ] , opts , into , line , true ) ,
1183
+ do: cmd_opts ( t , [ :stderr_to_stdout | opts ] , into , line , true )
1185
1184
1186
- defp cmd_opts ( [ { :use_stdio , false } | t ] , opts , into , line ) ,
1187
- do: cmd_opts ( t , [ :nouse_stdio | List . delete ( opts , : use_stdio) ] , into , line )
1185
+ defp cmd_opts ( [ { :stderr_to_stdout , true } | _ ] , _opts , _into , _line , false ) ,
1186
+ do: raise ( ArgumentError , "cannot use \" stderr_to_stdout: true \" and \" use_stdio: false \" " )
1188
1187
1189
- # use_stdio is true by default, do nothing but match it
1190
- defp cmd_opts ( [ { :use_stdio , true } | t ] , opts , into , line ) ,
1191
- do: cmd_opts ( t , opts , into , line )
1188
+ defp cmd_opts ( [ { :stderr_to_stdout , false } | t ] , opts , into , line , stdio? ) ,
1189
+ do: cmd_opts ( t , opts , into , line , stdio? )
1192
1190
1193
- defp cmd_opts ( [ { :parallelism , bool } | t ] , opts , into , line ) when is_boolean ( bool ) ,
1194
- do: cmd_opts ( t , [ { :parallelism , bool } | opts ] , into , line )
1191
+ defp cmd_opts ( [ { :parallelism , bool } | t ] , opts , into , line , stdio? ) when is_boolean ( bool ) ,
1192
+ do: cmd_opts ( t , [ { :parallelism , bool } | opts ] , into , line , stdio? )
1195
1193
1196
- defp cmd_opts ( [ { :env , enum } | t ] , opts , into , line ) ,
1197
- do: cmd_opts ( t , [ { :env , validate_env ( enum ) } | opts ] , into , line )
1194
+ defp cmd_opts ( [ { :env , enum } | t ] , opts , into , line , stdio? ) ,
1195
+ do: cmd_opts ( t , [ { :env , validate_env ( enum ) } | opts ] , into , line , stdio? )
1198
1196
1199
- defp cmd_opts ( [ { :lines , max_line_length } | t ] , opts , into , _line )
1197
+ defp cmd_opts ( [ { :lines , max_line_length } | t ] , opts , into , _line , stdio? )
1200
1198
when is_integer ( max_line_length ) and max_line_length > 0 ,
1201
- do: cmd_opts ( t , [ { :line , max_line_length } | opts ] , into , true )
1199
+ do: cmd_opts ( t , [ { :line , max_line_length } | opts ] , into , true , stdio? )
1202
1200
1203
- defp cmd_opts ( [ { key , val } | _ ] , _opts , _into , _line ) ,
1201
+ defp cmd_opts ( [ { key , val } | _ ] , _opts , _into , _line , _stdio? ) ,
1204
1202
do: raise ( ArgumentError , "invalid option #{ inspect ( key ) } with value #{ inspect ( val ) } " )
1205
1203
1206
- defp cmd_opts ( [ ] , opts , into , line ) do
1207
- if :stderr_to_stdout in opts and :nouse_stdio in opts ,
1208
- do: raise ( ArgumentError , "cannot use `stderr_to_stdout: true` and `use_stdio: false`" )
1209
-
1210
- { into , line , opts }
1204
+ defp cmd_opts ( [ ] , opts , into , line , stdio? ) do
1205
+ opt = if stdio? , do: :use_stdio , else: :nouse_stdio
1206
+ { into , line , [ opt | opts ] }
1211
1207
end
1212
1208
1213
1209
defp validate_env ( enum ) do
0 commit comments