Skip to content

Commit c7bed99

Browse files
committed
keep "name" and "config" in sync
1 parent d3a74ac commit c7bed99

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/commands/name.rs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::args::*;
22
use crate::vfs::generate_valid_name;
3-
use anyhow::{bail, Result};
3+
use anyhow::{bail, Context, Result};
4+
use firefly_types::Encode;
45
use std::fs;
56
use std::path::Path;
67

@@ -21,15 +22,26 @@ pub fn cmd_name_set(vfs: &Path, args: &NameSetArgs) -> Result<()> {
2122
if let Err(err) = firefly_types::validate_id(&args.name) {
2223
bail!("validate new name: {err}");
2324
}
24-
fs::write(name_path, &args.name)?;
25+
write_name(vfs, &args.name)?;
2526
println!("new name: {}", &args.name);
2627
Ok(())
2728
}
2829

2930
pub fn cmd_name_generate(vfs: &Path, _args: &NameGenerateArgs) -> Result<()> {
30-
let name_path = vfs.join("sys").join("name");
3131
let name = generate_valid_name();
32-
fs::write(name_path, &name)?;
32+
write_name(vfs, &name)?;
3333
println!("new name: {name}");
3434
Ok(())
3535
}
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

Comments
 (0)