diff options
| author | sigoden <sigoden@gmail.com> | 2024-05-15 09:25:39 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-15 09:25:39 +0800 |
| commit | 12d8798e616f5d4401e8ac73d5bb2c258d11ea7a (patch) | |
| tree | a0669e53ec3e61db4ab3f849d618d1e1cb18ccc4 /src/config/mod.rs | |
| parent | 64943f49d12f90856f7c7dfa4977751d3112fb77 (diff) | |
| download | aichat-12d8798e616f5d4401e8ac73d5bb2c258d11ea7a.tar.gz | |
fix: no builtin roles if no roles.yaml (#509)
Diffstat (limited to 'src/config/mod.rs')
| -rw-r--r-- | src/config/mod.rs | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/config/mod.rs b/src/config/mod.rs index 0138e16..66abac2 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -930,16 +930,14 @@ impl Config { fn load_roles(&mut self) -> Result<()> { let path = Self::roles_file()?; - if !path.exists() { - return Ok(()); - } - let content = read_to_string(&path) - .with_context(|| format!("Failed to load roles at {}", path.display()))?; - let roles: Vec<Role> = - serde_yaml::from_str(&content).with_context(|| "Invalid roles config")?; - - let exist_roles: HashSet<_> = roles.iter().map(|v| v.name.clone()).collect(); - self.roles = roles; + self.roles = if !path.exists() { + vec![] + } else { + let content = read_to_string(&path) + .with_context(|| format!("Failed to load roles at {}", path.display()))?; + serde_yaml::from_str(&content).with_context(|| "Invalid roles config")? + }; + let exist_roles: HashSet<_> = self.roles.iter().map(|v| v.name.clone()).collect(); let builtin_roles = Role::builtin(); for role in builtin_roles { if !exist_roles.contains(&role.name) { |
