@@ -26,28 +26,54 @@ pub struct AddArgs {
2626}
2727
2828impl CommandHandler for AddArgs {
29- fn get_runnable_cmd ( & self , package_manager : & String ) -> String {
29+ fn get_runnable_cmd (
30+ & self ,
31+ package_manager : & str ,
32+ ) -> Result < String , Box < dyn std:: error:: Error > > {
3033 let AddArgs {
3134 package,
3235 save,
3336 save_dev,
3437 save_optional,
3538 global,
3639 } = self ;
37-
40+ let cmd ;
3841 if * save {
39- format ! ( "{} add --save {}" , package_manager, package)
42+ cmd = match package_manager {
43+ "npm" => format ! ( "npm add --save {}" , package) ,
44+ "yarn" => format ! ( "yarn add --save {}" , package) ,
45+ "pnpm" => format ! ( "pnpm add --save {}" , package) ,
46+ _ => return Err ( "package_manager is invalid" . into ( ) ) ,
47+ } ;
4048 } else if * save_dev {
41- format ! ( "{} add --save-dev {}" , package_manager, package)
49+ cmd = match package_manager {
50+ "npm" => format ! ( "npm add --save-dev {}" , package) ,
51+ "yarn" => format ! ( "yarn add --save-dev {}" , package) ,
52+ "pnpm" => format ! ( "pnpm add --save-dev {}" , package) ,
53+ _ => return Err ( "package_manager is invalid" . into ( ) ) ,
54+ } ;
4255 } else if * save_optional {
43- format ! ( "{} add --save-optional {}" , package_manager, package)
56+ cmd = match package_manager {
57+ "npm" => format ! ( "npm add --save-optional {}" , package) ,
58+ "yarn" => format ! ( "yarn add --save-optional {}" , package) ,
59+ "pnpm" => format ! ( "pnpm add --save-optional {}" , package) ,
60+ _ => return Err ( "package_manager is invalid" . into ( ) ) ,
61+ } ;
4462 } else if * global {
45- match package. as_str ( ) {
63+ cmd = match package_manager {
64+ "npm" => format ! ( "npm add --global {}" , package) ,
4665 "yarn" => format ! ( "yarn global add {}" , package) ,
47- _ => format ! ( "{} add --global {}" , package_manager, package) ,
48- }
66+ "pnpm" => format ! ( "pnpm add --global {}" , package) ,
67+ _ => return Err ( "package_manager is invalid" . into ( ) ) ,
68+ } ;
4969 } else {
50- format ! ( "{} add {}" , package_manager, package)
70+ cmd = match package_manager {
71+ "npm" => format ! ( "npm add {}" , package) ,
72+ "yarn" => format ! ( "yarn add {}" , package) ,
73+ "pnpm" => format ! ( "pnpm add {}" , package) ,
74+ _ => return Err ( "package_manager is invalid" . into ( ) ) ,
75+ } ;
5176 }
77+ Ok ( cmd)
5278 }
5379}
0 commit comments