@@ -50,38 +50,17 @@ fn run() -> Result<i32> {
50
50
51
51
if let Some ( argc_cmd) = argc_cmd {
52
52
match argc_cmd {
53
- "--argc-eval" => {
54
- let ( source, _script_path, cmd_args) = parse_script_args ( & args[ 2 ..] ) ?;
55
- if cmd_args
56
- . get ( 1 )
57
- . map ( |v| v == parallel:: PARALLEL_SYMBOL )
58
- . unwrap_or_default ( )
59
- {
60
- let cmd_args_len = cmd_args. len ( ) ;
61
- if cmd_args_len < 3 {
62
- bail ! ( "No parallel command" )
63
- }
64
- let bash_options = get_bash_options ( ) ;
65
- let mut code = retrieve_argc_variables ( ) . unwrap_or_default ( ) ;
66
- let mut cmds = vec ! [ cmd_args[ 2 ] . to_string( ) ] ;
67
- cmds. extend ( cmd_args[ 3 ..] . iter ( ) . map ( |v| escape_shell_words ( v) ) ) ;
68
- code. push_str ( & cmds. join ( " " ) ) ;
69
- println ! ( "{bash_options}{code}" )
70
- } else {
71
- let values = argc:: eval (
72
- runtime,
73
- & source,
74
- & cmd_args,
75
- Some ( & args[ 2 ] ) ,
76
- get_term_width ( ) ,
77
- ) ?;
78
- let bash_options = get_bash_options ( ) ;
79
- let dir_vars = export_dir_vars ( & args[ 2 ] ) ;
80
- let code = argc:: ArgcValue :: to_bash ( & values) ;
81
- let export_vars = export_argc_variables ( & code) ;
82
- println ! ( "{bash_options}{dir_vars}{export_vars}{code}" )
53
+ "--argc-eval" => match run_eval ( runtime, args) {
54
+ Ok ( output) => {
55
+ println ! ( "{}" , output) ;
83
56
}
84
- }
57
+ Err ( err) => {
58
+ println ! (
59
+ "echo {}\n exit 1" ,
60
+ escape_shell_words( & format!( "Error: {err}" ) )
61
+ ) ;
62
+ }
63
+ } ,
85
64
"--argc-run" => {
86
65
if args. len ( ) < 3 {
87
66
bail ! ( "No script file provided" ) ;
@@ -222,6 +201,40 @@ fn run() -> Result<i32> {
222
201
}
223
202
}
224
203
204
+ fn run_eval ( runtime : NativeRuntime , args : Vec < String > ) -> Result < String > {
205
+ let ( source, _script_path, cmd_args) = parse_script_args ( & args[ 2 ..] ) ?;
206
+ let output = if cmd_args
207
+ . get ( 1 )
208
+ . map ( |v| v == parallel:: PARALLEL_SYMBOL )
209
+ . unwrap_or_default ( )
210
+ {
211
+ let cmd_args_len = cmd_args. len ( ) ;
212
+ if cmd_args_len < 3 {
213
+ bail ! ( "No parallel command" )
214
+ }
215
+ let bash_options = get_bash_options ( ) ;
216
+ let mut code = retrieve_argc_variables ( ) . unwrap_or_default ( ) ;
217
+ let mut cmds = vec ! [ cmd_args[ 2 ] . to_string( ) ] ;
218
+ cmds. extend ( cmd_args[ 3 ..] . iter ( ) . map ( |v| escape_shell_words ( v) ) ) ;
219
+ code. push_str ( & cmds. join ( " " ) ) ;
220
+ format ! ( "{bash_options}{code}" )
221
+ } else {
222
+ let values = argc:: eval (
223
+ runtime,
224
+ & source,
225
+ & cmd_args,
226
+ Some ( & args[ 2 ] ) ,
227
+ get_term_width ( ) ,
228
+ ) ?;
229
+ let bash_options = get_bash_options ( ) ;
230
+ let dir_vars = export_dir_vars ( & args[ 2 ] ) ;
231
+ let code = argc:: ArgcValue :: to_bash ( & values) ;
232
+ let export_vars = export_argc_variables ( & code) ;
233
+ format ! ( "{bash_options}{dir_vars}{export_vars}{code}" )
234
+ } ;
235
+ Ok ( output)
236
+ }
237
+
225
238
fn run_command < T : AsRef < OsStr > > (
226
239
script_path : & str ,
227
240
prog : & str ,
0 commit comments