@@ -187,13 +187,26 @@ impl Cli {
187187
188188 fn clone ( args : Vec < String > , workspace : Option < String > ) -> Result < ( ) , Error > {
189189 let mut url = URLBuilder :: new ( ) ;
190+ url. set_protocol ( "https" ) ;
190191 let mut clone = if args. is_empty ( ) {
191192 clone_setup ( ) ?
193+ } else if Settings :: current ( ) . is_some ( ) && args. len ( ) == 1 {
194+ let Some ( options) = Settings :: current ( ) else {
195+ return devmode:: error ( "" ) ;
196+ } ;
197+
198+ url. set_host ( Host :: from ( & options. host ) . url ( ) )
199+ . add_route ( & options. owner ) ;
200+ if let Some ( repo) = args. get ( 0 ) {
201+ url. add_route ( repo) ;
202+ }
203+
204+ CloneAction :: new ( & url. build ( ) )
192205 } else if args. len ( ) == 1 {
193206 if let Some ( url) = args. get ( 0 ) {
194207 CloneAction :: new ( url)
195208 } else {
196- return devmode:: generic ( "No URL provided" ) ;
209+ return devmode:: error ( "No URL provided" ) ;
197210 }
198211 } else if args. len ( ) == 3 {
199212 if let Some ( host) = args. get ( 0 ) {
@@ -207,27 +220,23 @@ impl Cli {
207220 }
208221 CloneAction :: new ( & url. build ( ) )
209222 } else {
210- let options = Settings :: current ( ) . ok_or ( Error :: Generic ( "Failed to load settings" ) ) ?;
211- url. set_host ( Host :: from ( & options. host ) . url ( ) )
212- . add_route ( & options. owner ) ;
213- if let Some ( repo) = args. get ( 2 ) {
214- url. add_route ( repo) ;
215- }
216-
217- CloneAction :: new ( & url. build ( ) )
223+ return devmode:: error ( "The command was invalid" ) ;
218224 } ;
219225 if let Some ( workspace) = workspace {
220226 clone. set_workspace ( workspace) ;
221227 }
222228
223- if let Err ( Error :: Git ( error) ) = clone. run ( ) {
224- match error. code ( ) {
225- git2:: ErrorCode :: Exists => {
226- if overwrite ( clone. get_local_path ( ) ?) ? {
227- clone. run ( ) ?;
229+ if let Err ( error) = clone. run ( ) {
230+ match error {
231+ Error :: Git ( error) => match error. code ( ) {
232+ git2:: ErrorCode :: Exists => {
233+ if overwrite ( clone. get_local_path ( ) ?) ? {
234+ clone. run ( ) ?;
235+ }
228236 }
229- }
230- _ => log:: error!( "{error}" ) ,
237+ _ => log:: error!( "{error}" ) ,
238+ } ,
239+ error => log:: error!( "{error}" ) ,
231240 }
232241 } ;
233242
@@ -238,7 +247,7 @@ impl Cli {
238247 let reader = create_paths_reader ( ) ?;
239248 let paths = find_paths ( reader, project) ?;
240249 if paths. is_empty ( ) {
241- return devmode:: generic ( NO_PROJECT_FOUND ) ;
250+ return devmode:: error ( NO_PROJECT_FOUND ) ;
242251 } else if paths. len ( ) > 1 {
243252 let paths: Vec < & str > = paths. iter ( ) . map ( |s| s as & str ) . collect ( ) ;
244253 let path = select_repo ( paths) ?. to_string ( ) ;
@@ -251,7 +260,7 @@ impl Cli {
251260 let reader = create_paths_reader ( ) ?;
252261 let paths = find_paths ( reader, project) ?;
253262 if paths. is_empty ( ) {
254- return devmode:: generic ( NO_PROJECT_FOUND ) ;
263+ return devmode:: error ( NO_PROJECT_FOUND ) ;
255264 } else if paths. len ( ) > 1 {
256265 eprintln ! ( "{}" , MORE_PROJECTS_FOUND ) ; // TODO: Let user decide which
257266 let paths: Vec < & str > = paths. iter ( ) . map ( |s| s as & str ) . collect ( ) ;
@@ -406,7 +415,7 @@ impl Cli {
406415 . filter ( |path| !path. contains ( name. as_str ( ) ) )
407416 . collect ( ) ;
408417 let path = if paths. is_empty ( ) {
409- return devmode:: generic ( "Could not locate the {add} repository." ) ;
418+ return devmode:: error ( "Could not locate the {add} repository." ) ;
410419 } else if paths. len ( ) > 1 {
411420 eprintln ! ( "{}" , MORE_PROJECTS_FOUND ) ;
412421 let paths: Vec < & str > = paths. iter ( ) . map ( |s| s as & str ) . collect ( ) ;
@@ -438,7 +447,7 @@ impl Cli {
438447 . filter ( |path| path. contains ( name. as_str ( ) ) )
439448 . collect ( ) ;
440449 let path = if paths. is_empty ( ) {
441- return devmode:: generic (
450+ return devmode:: error (
442451 "Could not locate the {remove} repository inside {name}" ,
443452 ) ;
444453 } else if paths. len ( ) > 1 {
@@ -469,7 +478,7 @@ impl Cli {
469478 println ! ( "Workspace `{name}` found." ) ;
470479 }
471480 } else if delete || rename. is_some ( ) {
472- return devmode:: generic ( "Couldn't find a workspace that matches {name}." ) ;
481+ return devmode:: error ( "Couldn't find a workspace that matches {name}." ) ;
473482 } else {
474483 settings. workspaces . names . push ( name. clone ( ) ) ;
475484 settings. write ( true ) ?;
0 commit comments