@@ -177,6 +177,12 @@ pub enum DaemonCommand {
177
177
Stop ,
178
178
}
179
179
180
+ #[ derive( Copy , Clone , Debug , PartialEq , Serialize , ValueEnum ) ]
181
+ pub enum LinkTarget {
182
+ RemoteCache ,
183
+ Spaces ,
184
+ }
185
+
180
186
impl Args {
181
187
pub fn new ( ) -> Result < Self > {
182
188
let mut clap_args = match Args :: try_parse ( ) {
@@ -250,6 +256,10 @@ pub enum Command {
250
256
/// Do not create or modify .gitignore (default false)
251
257
#[ clap( long) ]
252
258
no_gitignore : bool ,
259
+
260
+ /// Specify what should be linked (default "remote cache")
261
+ #[ clap( long, value_enum, default_value_t = LinkTarget :: RemoteCache ) ]
262
+ target : LinkTarget ,
253
263
} ,
254
264
/// Login to your Vercel account
255
265
Login {
@@ -280,7 +290,11 @@ pub enum Command {
280
290
Run ( Box < RunArgs > ) ,
281
291
/// Unlink the current directory from your Vercel organization and disable
282
292
/// Remote Caching
283
- Unlink { } ,
293
+ Unlink {
294
+ /// Specify what should be unlinked (default "remote cache")
295
+ #[ clap( long, value_enum, default_value_t = LinkTarget :: RemoteCache ) ]
296
+ target : LinkTarget ,
297
+ } ,
284
298
}
285
299
286
300
#[ derive( Parser , Clone , Debug , Default , Serialize , PartialEq ) ]
@@ -506,30 +520,32 @@ pub async fn run(repo_state: Option<RepoState>) -> Result<Payload> {
506
520
507
521
Ok ( Payload :: Rust ( Ok ( 0 ) ) )
508
522
}
509
- Command :: Link { no_gitignore } => {
523
+ Command :: Link { no_gitignore, target } => {
510
524
if clap_args. test_run {
511
525
println ! ( "Link test run successful" ) ;
512
526
return Ok ( Payload :: Rust ( Ok ( 0 ) ) ) ;
513
527
}
514
528
515
529
let modify_gitignore = !* no_gitignore;
530
+ let to = * target;
516
531
let mut base = CommandBase :: new ( clap_args, repo_root, version) ?;
517
532
518
- if let Err ( err) = link:: link ( & mut base, modify_gitignore) . await {
533
+ if let Err ( err) = link:: link ( & mut base, modify_gitignore, to ) . await {
519
534
error ! ( "error: {}" , err. to_string( ) )
520
535
} ;
521
536
522
537
Ok ( Payload :: Rust ( Ok ( 0 ) ) )
523
538
}
524
- Command :: Unlink { .. } => {
539
+ Command :: Unlink { target } => {
525
540
if clap_args. test_run {
526
541
println ! ( "Unlink test run successful" ) ;
527
542
return Ok ( Payload :: Rust ( Ok ( 0 ) ) ) ;
528
543
}
529
544
545
+ let from = * target;
530
546
let mut base = CommandBase :: new ( clap_args, repo_root, version) ?;
531
547
532
- unlink:: unlink ( & mut base) ?;
548
+ unlink:: unlink ( & mut base, from ) ?;
533
549
534
550
Ok ( Payload :: Rust ( Ok ( 0 ) ) )
535
551
}
@@ -1212,7 +1228,9 @@ mod test {
1212
1228
assert_eq ! (
1213
1229
Args :: try_parse_from( [ "turbo" , "unlink" ] ) . unwrap( ) ,
1214
1230
Args {
1215
- command: Some ( Command :: Unlink { } ) ,
1231
+ command: Some ( Command :: Unlink {
1232
+ target: crate :: cli:: LinkTarget :: RemoteCache
1233
+ } ) ,
1216
1234
..Args :: default ( )
1217
1235
}
1218
1236
) ;
@@ -1222,7 +1240,9 @@ mod test {
1222
1240
command_args : vec ! [ ] ,
1223
1241
global_args : vec ! [ vec![ "--cwd" , "../examples/with-yarn" ] ] ,
1224
1242
expected_output : Args {
1225
- command : Some ( Command :: Unlink { } ) ,
1243
+ command : Some ( Command :: Unlink {
1244
+ target : crate :: cli:: LinkTarget :: RemoteCache ,
1245
+ } ) ,
1226
1246
cwd : Some ( PathBuf :: from ( "../examples/with-yarn" ) ) ,
1227
1247
..Args :: default ( )
1228
1248
} ,
0 commit comments