@@ -275,7 +275,12 @@ Arguments:
275
275
} ;
276
276
// Get any optional paths which occur after the subcommand
277
277
let cwd = t ! ( env:: current_dir( ) ) ;
278
- let paths = matches. free [ 1 ..] . iter ( ) . map ( |p| cwd. join ( p) ) . collect :: < Vec < _ > > ( ) ;
278
+ let src = matches. opt_str ( "src" ) . map ( PathBuf :: from)
279
+ . or_else ( || env:: var_os ( "SRC" ) . map ( PathBuf :: from) )
280
+ . unwrap_or ( cwd. clone ( ) ) ;
281
+ let paths = matches. free [ 1 ..] . iter ( ) . map ( |p| {
282
+ cwd. join ( p) . strip_prefix ( & src) . expect ( "paths passed to be inside checkout" ) . into ( )
283
+ } ) . collect :: < Vec < PathBuf > > ( ) ;
279
284
280
285
let cfg_file = matches. opt_str ( "config" ) . map ( PathBuf :: from) . or_else ( || {
281
286
if fs:: metadata ( "config.toml" ) . is_ok ( ) {
@@ -360,10 +365,6 @@ Arguments:
360
365
stage = Some ( 1 ) ;
361
366
}
362
367
363
- let src = matches. opt_str ( "src" ) . map ( PathBuf :: from)
364
- . or_else ( || env:: var_os ( "SRC" ) . map ( PathBuf :: from) )
365
- . unwrap_or ( cwd. clone ( ) ) ;
366
-
367
368
Flags {
368
369
verbose : matches. opt_count ( "verbose" ) ,
369
370
stage,
@@ -375,12 +376,14 @@ Arguments:
375
376
target : split ( matches. opt_strs ( "target" ) )
376
377
. into_iter ( ) . map ( |x| INTERNER . intern_string ( x) ) . collect :: < Vec < _ > > ( ) ,
377
378
config : cfg_file,
378
- src,
379
379
jobs : matches. opt_str ( "jobs" ) . map ( |j| j. parse ( ) . unwrap ( ) ) ,
380
380
cmd,
381
381
incremental : matches. opt_present ( "incremental" ) ,
382
382
exclude : split ( matches. opt_strs ( "exclude" ) )
383
- . into_iter ( ) . map ( |p| cwd. join ( p) ) . collect :: < Vec < _ > > ( ) ,
383
+ . into_iter ( ) . map ( |p| {
384
+ cwd. join ( p) . strip_prefix ( & src) . expect ( "paths to be inside checkout" ) . into ( )
385
+ } ) . collect :: < Vec < _ > > ( ) ,
386
+ src,
384
387
}
385
388
}
386
389
}
0 commit comments