aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Fuchs2020-11-25 19:08:00 -0500
committernotgne22020-12-02 10:24:23 -0700
commit29ab0624e3ff236669627f7154071e6c555abd85 (patch)
treec336a6af1c98ad2b8e7bb77dc72c6a12eaa7944c
parent6ccc0b7ae981d8cd872af1eae69a2435aa87b8ef (diff)
Use the profile closure's activate script to activate the profile
This gets rid of the "current_exe" vestige that has stuck around from when this program was meant to be standalone; instead, we use the (already known) path to the activate-rs wrapper, which automatically uses the correct binary for the deploy target platform.
-rw-r--r--src/utils/deploy.rs2
-rw-r--r--src/utils/mod.rs26
-rw-r--r--src/utils/push.rs8
3 files changed, 13 insertions, 23 deletions
diff --git a/src/utils/deploy.rs b/src/utils/deploy.rs
index a82fa6c..b37909e 100644
--- a/src/utils/deploy.rs
+++ b/src/utils/deploy.rs
@@ -89,7 +89,7 @@ pub async fn deploy_profile(
deploy_data.profile_name, deploy_data.node_name
);
- let activate_path_str = super::deploy_path_to_activate_path_str(&deploy_defs.current_exe)?;
+ let activate_path_str = super::deploy_path_to_activate_path_str(deploy_defs)?;
let temp_path: Cow<str> = match &deploy_data.merged_settings.temp_path {
Some(x) => x.into(),
diff --git a/src/utils/mod.rs b/src/utils/mod.rs
index deea78e..6052813 100644
--- a/src/utils/mod.rs
+++ b/src/utils/mod.rs
@@ -197,7 +197,6 @@ pub struct DeployDefs {
pub ssh_user: String,
pub profile_user: String,
pub profile_path: String,
- pub current_exe: PathBuf,
pub sudo: Option<String>,
}
@@ -258,7 +257,6 @@ impl<'a> DeployData<'a> {
ssh_user,
profile_user,
profile_path,
- current_exe,
sudo,
})
}
@@ -316,25 +314,21 @@ pub enum DeployPathToActivatePathError {
}
pub fn deploy_path_to_activate_path_str(
- deploy_path: &std::path::Path,
+ deploy_defs: &DeployDefs,
) -> Result<String, DeployPathToActivatePathError> {
- Ok(format!(
- "{}/activate",
- deploy_path
- .parent()
- .ok_or(DeployPathToActivatePathError::PathTooShort)?
- .to_str()
- .ok_or(DeployPathToActivatePathError::InvalidUtf8)?
- .to_owned()
- ))
+ Ok(format!("{}/activate-rs", deploy_defs.profile_path))
}
#[test]
fn test_activate_path_generation() {
- match deploy_path_to_activate_path_str(&std::path::PathBuf::from(
- "/blah/blah/deploy-rs/bin/deploy",
- )) {
+ let defs = DeployDefs {
+ ssh_user: "foo".to_string(),
+ profile_user: "bar".to_string(),
+ profile_path: "/nix/store/profile-closure".to_string(),
+ sudo: None,
+ };
+ match deploy_path_to_activate_path_str(&defs) {
Err(_) => panic!(""),
- Ok(x) => assert_eq!(x, "/blah/blah/deploy-rs/bin/activate".to_string()),
+ Ok(x) => assert_eq!(x, "/nix/store/profile-closure/activate-rs".to_string()),
}
}
diff --git a/src/utils/push.rs b/src/utils/push.rs
index 342cd65..2dd408b 100644
--- a/src/utils/push.rs
+++ b/src/utils/push.rs
@@ -99,9 +99,7 @@ pub async fn push_profile(
.arg("-k")
.arg(local_key)
.arg(&deploy_data.profile.profile_settings.path)
- .arg(&super::deploy_path_to_activate_path_str(
- &deploy_defs.current_exe,
- )?)
+ .arg(&super::deploy_path_to_activate_path_str(&deploy_defs)?)
.status()
.await
.map_err(PushProfileError::SignError)?;
@@ -146,9 +144,7 @@ pub async fn push_profile(
.arg("--to")
.arg(format!("ssh://{}@{}", deploy_defs.ssh_user, hostname))
.arg(&deploy_data.profile.profile_settings.path)
- .arg(&super::deploy_path_to_activate_path_str(
- &deploy_defs.current_exe,
- )?)
+ .arg(&super::deploy_path_to_activate_path_str(&deploy_defs)?)
.env("NIX_SSHOPTS", ssh_opts_str)
.status()
.await