@@ -120,6 +120,40 @@ pub fn remove_cmd(config: &mut Config, matches: &ArgMatches) -> Result<i32> {
120
120
}
121
121
}
122
122
123
+ /// Run the `cmd-update` sub-command.
124
+ pub fn update_cmd ( config : & mut Config , matches : & ArgMatches ) -> Result < i32 > {
125
+ if let Some ( name) = matches. value_of ( "name" ) {
126
+ let toml = match MusshToml :: new ( config) {
127
+ Ok ( toml) => toml,
128
+ Err ( _) => Default :: default ( ) ,
129
+ } ;
130
+
131
+ let cmds = toml. cmd ( ) ;
132
+
133
+ if let Some ( cmd) = cmds. get ( name) {
134
+ let mut mut_cmd = cmd. clone ( ) ;
135
+ let mut mut_toml = toml. clone ( ) ;
136
+ if let Some ( cmd_arg) = matches. value_of ( "cmd" ) {
137
+ mut_cmd. set_command ( cmd_arg) ;
138
+ }
139
+
140
+ mut_toml. add_cmd ( name, mut_cmd) ;
141
+
142
+ match cmd:: write_toml ( config, & mut_toml) {
143
+ Ok ( i) => {
144
+ info ! ( config. stdout( ) , "'{}' updated successfully" , name) ;
145
+ Ok ( i)
146
+ }
147
+ Err ( e) => Err ( e) ,
148
+ }
149
+ } else {
150
+ Err ( ErrorKind :: HostDoesNotExist . into ( ) )
151
+ }
152
+ } else {
153
+ Err ( ErrorKind :: SubCommand . into ( ) )
154
+ }
155
+ }
156
+
123
157
/// Run the `host` sub-command.
124
158
pub fn cmd ( config : & mut Config , sub_m : & ArgMatches , stderr : & Logger ) -> Result < i32 > {
125
159
match sub_m. subcommand ( ) {
@@ -129,6 +163,8 @@ pub fn cmd(config: &mut Config, sub_m: &ArgMatches, stderr: &Logger) -> Result<i
129
163
( "add" , Some ( matches) ) => add_cmd ( config, matches) ,
130
164
// 'cmd-remove' subcommand
131
165
( "remove" , Some ( matches) ) => remove_cmd ( config, matches) ,
166
+ // 'cmd-update' subcommand
167
+ ( "update" , Some ( matches) ) => update_cmd ( config, matches) ,
132
168
_ => Err ( ErrorKind :: SubCommand . into ( ) ) ,
133
169
}
134
170
}
0 commit comments