1
1
use crate :: args:: * ;
2
2
use crate :: vfs:: generate_valid_name;
3
- use anyhow:: { bail, Result } ;
3
+ use anyhow:: { bail, Context , Result } ;
4
+ use firefly_types:: Encode ;
4
5
use std:: fs;
5
6
use std:: path:: Path ;
6
7
@@ -21,15 +22,26 @@ pub fn cmd_name_set(vfs: &Path, args: &NameSetArgs) -> Result<()> {
21
22
if let Err ( err) = firefly_types:: validate_id ( & args. name ) {
22
23
bail ! ( "validate new name: {err}" ) ;
23
24
}
24
- fs :: write ( name_path , & args. name ) ?;
25
+ write_name ( vfs , & args. name ) ?;
25
26
println ! ( "new name: {}" , & args. name) ;
26
27
Ok ( ( ) )
27
28
}
28
29
29
30
pub fn cmd_name_generate ( vfs : & Path , _args : & NameGenerateArgs ) -> Result < ( ) > {
30
- let name_path = vfs. join ( "sys" ) . join ( "name" ) ;
31
31
let name = generate_valid_name ( ) ;
32
- fs :: write ( name_path , & name) ?;
32
+ write_name ( vfs , & name) ?;
33
33
println ! ( "new name: {name}" ) ;
34
34
Ok ( ( ) )
35
35
}
36
+
37
+ fn write_name ( vfs : & Path , name : & str ) -> Result < ( ) > {
38
+ let name_path = vfs. join ( "sys" ) . join ( "name" ) ;
39
+ fs:: write ( name_path, name) ?;
40
+ let settings_path = vfs. join ( "sys" ) . join ( "config" ) ;
41
+ let raw = fs:: read ( & settings_path) . context ( "read settings" ) ?;
42
+ let mut settings = firefly_types:: Settings :: decode ( & raw [ ..] ) . context ( "parse settings" ) ?;
43
+ settings. name = name. to_string ( ) ;
44
+ let raw = settings. encode_vec ( ) . context ( "encode settings" ) ?;
45
+ fs:: write ( settings_path, raw) . context ( "write settings file" ) ?;
46
+ Ok ( ( ) )
47
+ }
0 commit comments