diff options
| author | Roman Melnikov | 2023-09-12 12:15:07 +0200 | 
|---|---|---|
| committer | GitHub | 2023-09-12 12:15:07 +0200 | 
| commit | 31c32fb2959103a796e07bbe47e0a5e287c343a8 (patch) | |
| tree | 2a25e8e990de3ddd624a009ab94309ba06a982fc /src/lib.rs | |
| parent | d0cfc042eba92eb206611c9e8784d41a2c053bab (diff) | |
| parent | f26e888c41d28107de9dbc5b4e1553c1dfcf83db (diff) | |
Merge pull request #231 from serokell/rvem/#201-dont-hardcode-profile-directory
[#201] Deduce profile directory during activation
Diffstat (limited to '')
| -rw-r--r-- | src/lib.rs | 38 | 
1 files changed, 19 insertions, 19 deletions
@@ -332,9 +332,17 @@ pub struct DeployData<'a> {  pub struct DeployDefs {      pub ssh_user: String,      pub profile_user: String, -    pub profile_path: String,      pub sudo: Option<String>,  } +enum ProfileInfo { +    ProfilePath { +        profile_path: String, +    }, +    ProfileUserAndName { +        profile_user: String, +        profile_name: String, +    }, +}  #[derive(Error, Debug)]  pub enum DeployDataDefsError { @@ -351,8 +359,6 @@ impl<'a> DeployData<'a> {          let profile_user = self.get_profile_user()?; -        let profile_path = self.get_profile_path()?; -          let sudo: Option<String> = match self.merged_settings.user {              Some(ref user) if user != &ssh_user => Some(format!("{} {}", self.get_sudo(), user)),              _ => None, @@ -361,26 +367,10 @@ impl<'a> DeployData<'a> {          Ok(DeployDefs {              ssh_user,              profile_user, -            profile_path,              sudo,          })      } -    fn get_profile_path(&'a self) -> Result<String, DeployDataDefsError> { -        let profile_user = self.get_profile_user()?; -        let profile_path = match self.profile.profile_settings.profile_path { -            None => match &profile_user[..] { -                "root" => format!("/nix/var/nix/profiles/{}", self.profile_name), -                _ => format!( -                    "/nix/var/nix/profiles/per-user/{}/{}", -                    profile_user, self.profile_name -                ), -            }, -            Some(ref x) => x.clone(), -        }; -        Ok(profile_path) -    } -      fn get_profile_user(&'a self) -> Result<String, DeployDataDefsError> {          let profile_user = match self.merged_settings.user {              Some(ref x) => x.clone(), @@ -403,6 +393,16 @@ impl<'a> DeployData<'a> {              None => "sudo -u".to_string(),          }      } + +    fn get_profile_info(&'a self) -> Result<ProfileInfo, DeployDataDefsError> { +        match self.profile.profile_settings.profile_path { +            Some(ref profile_path) => Ok(ProfileInfo::ProfilePath { profile_path: profile_path.to_string() }), +            None => { +                let profile_user = self.get_profile_user()?; +                Ok(ProfileInfo::ProfileUserAndName { profile_user, profile_name: self.profile_name.to_string() }) +            }, +        } +    }  }  pub fn make_deploy_data<'a, 's>(  | 
