From 12d8798e616f5d4401e8ac73d5bb2c258d11ea7a Mon Sep 17 00:00:00 2001 From: sigoden Date: Wed, 15 May 2024 09:25:39 +0800 Subject: fix: no builtin roles if no roles.yaml (#509) --- src/config/mod.rs | 18 ++++++++---------- 1 file 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 = - 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) { -- cgit v1.2.3