@@ -177,6 +177,12 @@ pub enum DaemonCommand {
177177 Stop ,
178178}
179179
180+ #[ derive( Copy , Clone , Debug , PartialEq , Serialize , ValueEnum ) ]
181+ pub enum LinkTarget {
182+ RemoteCache ,
183+ Spaces ,
184+ }
185+
180186impl Args {
181187 pub fn new ( ) -> Result < Self > {
182188 let mut clap_args = match Args :: try_parse ( ) {
@@ -250,6 +256,10 @@ pub enum Command {
250256 /// Do not create or modify .gitignore (default false)
251257 #[ clap( long) ]
252258 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 ,
253263 } ,
254264 /// Login to your Vercel account
255265 Login {
@@ -280,7 +290,11 @@ pub enum Command {
280290 Run ( Box < RunArgs > ) ,
281291 /// Unlink the current directory from your Vercel organization and disable
282292 /// 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+ } ,
284298}
285299
286300#[ derive( Parser , Clone , Debug , Default , Serialize , PartialEq ) ]
@@ -506,30 +520,32 @@ pub async fn run(repo_state: Option<RepoState>) -> Result<Payload> {
506520
507521 Ok ( Payload :: Rust ( Ok ( 0 ) ) )
508522 }
509- Command :: Link { no_gitignore } => {
523+ Command :: Link { no_gitignore, target } => {
510524 if clap_args. test_run {
511525 println ! ( "Link test run successful" ) ;
512526 return Ok ( Payload :: Rust ( Ok ( 0 ) ) ) ;
513527 }
514528
515529 let modify_gitignore = !* no_gitignore;
530+ let to = * target;
516531 let mut base = CommandBase :: new ( clap_args, repo_root, version) ?;
517532
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 {
519534 error ! ( "error: {}" , err. to_string( ) )
520535 } ;
521536
522537 Ok ( Payload :: Rust ( Ok ( 0 ) ) )
523538 }
524- Command :: Unlink { .. } => {
539+ Command :: Unlink { target } => {
525540 if clap_args. test_run {
526541 println ! ( "Unlink test run successful" ) ;
527542 return Ok ( Payload :: Rust ( Ok ( 0 ) ) ) ;
528543 }
529544
545+ let from = * target;
530546 let mut base = CommandBase :: new ( clap_args, repo_root, version) ?;
531547
532- unlink:: unlink ( & mut base) ?;
548+ unlink:: unlink ( & mut base, from ) ?;
533549
534550 Ok ( Payload :: Rust ( Ok ( 0 ) ) )
535551 }
@@ -1212,7 +1228,9 @@ mod test {
12121228 assert_eq ! (
12131229 Args :: try_parse_from( [ "turbo" , "unlink" ] ) . unwrap( ) ,
12141230 Args {
1215- command: Some ( Command :: Unlink { } ) ,
1231+ command: Some ( Command :: Unlink {
1232+ target: crate :: cli:: LinkTarget :: RemoteCache
1233+ } ) ,
12161234 ..Args :: default ( )
12171235 }
12181236 ) ;
@@ -1222,7 +1240,9 @@ mod test {
12221240 command_args : vec ! [ ] ,
12231241 global_args : vec ! [ vec![ "--cwd" , "../examples/with-yarn" ] ] ,
12241242 expected_output : Args {
1225- command : Some ( Command :: Unlink { } ) ,
1243+ command : Some ( Command :: Unlink {
1244+ target : crate :: cli:: LinkTarget :: RemoteCache ,
1245+ } ) ,
12261246 cwd : Some ( PathBuf :: from ( "../examples/with-yarn" ) ) ,
12271247 ..Args :: default ( )
12281248 } ,
0 commit comments