aboutsummaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
authorRoman Melnikov2023-09-12 12:15:07 +0200
committerGitHub2023-09-12 12:15:07 +0200
commit31c32fb2959103a796e07bbe47e0a5e287c343a8 (patch)
tree2a25e8e990de3ddd624a009ab94309ba06a982fc /src/lib.rs
parentd0cfc042eba92eb206611c9e8784d41a2c053bab (diff)
parentf26e888c41d28107de9dbc5b4e1553c1dfcf83db (diff)
Merge pull request #231 from serokell/rvem/#201-dont-hardcode-profile-directory
[#201] Deduce profile directory during activation
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs38
1 files changed, 19 insertions, 19 deletions
diff --git a/src/lib.rs b/src/lib.rs
index c6f8e03..0e5d817 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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>(