aboutsummaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/utils/data.rs10
-rw-r--r--src/utils/deploy.rs17
-rw-r--r--src/utils/push.rs2
3 files changed, 22 insertions, 7 deletions
diff --git a/src/utils/data.rs b/src/utils/data.rs
index b28b6cd..0753508 100644
--- a/src/utils/data.rs
+++ b/src/utils/data.rs
@@ -14,10 +14,12 @@ pub struct GenericSettings {
)]
#[merge(strategy = merge::vec::append)]
pub ssh_opts: Vec<String>,
- #[serde(rename(deserialize = "fastConnection"))]
- pub fast_connection: Option<bool>,
- #[serde(rename(deserialize = "autoRollback"))]
- pub auto_rollback: Option<String>,
+ #[serde(rename(deserialize = "fastConnection"), default)]
+ #[merge(strategy = merge::bool::overwrite_false)]
+ pub fast_connection: bool,
+ #[serde(rename(deserialize = "autoRollback"), default)]
+ #[merge(strategy = merge::bool::overwrite_false)]
+ pub auto_rollback: bool,
}
#[derive(Deserialize, Debug, Clone)]
diff --git a/src/utils/deploy.rs b/src/utils/deploy.rs
index 900743c..42bd0b4 100644
--- a/src/utils/deploy.rs
+++ b/src/utils/deploy.rs
@@ -9,6 +9,7 @@ pub async fn deploy_profile(
node_name: &str,
merged_settings: &data::GenericSettings,
deploy_data: &super::DeployData<'_>,
+ auto_rollback: bool,
) -> Result<(), Box<dyn std::error::Error>> {
info!(
"Activating profile `{}` for node `{}`",
@@ -16,8 +17,16 @@ pub async fn deploy_profile(
);
let mut self_activate_command = format!(
- "{} activate '{}' '{}'",
- deploy_data.current_exe.as_path().to_str().unwrap(),
+ "{} '{}' '{}'",
+ deploy_data
+ .current_exe
+ .as_path()
+ .parent()
+ .unwrap()
+ .to_str()
+ .unwrap()
+ .to_owned()
+ + "/activate",
deploy_data.profile_path,
profile.profile_settings.path,
);
@@ -40,6 +49,10 @@ pub async fn deploy_profile(
);
}
+ if auto_rollback {
+ self_activate_command = format!("{} --auto-rollback", self_activate_command);
+ }
+
let mut c = Command::new("ssh");
let mut ssh_command = c.arg(format!(
"ssh://{}@{}",
diff --git a/src/utils/push.rs b/src/utils/push.rs
index 54ae013..0e1b9ba 100644
--- a/src/utils/push.rs
+++ b/src/utils/push.rs
@@ -74,7 +74,7 @@ pub async fn push_profile(
let mut copy_command_ = Command::new("nix");
let mut copy_command = copy_command_.arg("copy");
- if let Some(true) = merged_settings.fast_connection {
+ if merged_settings.fast_connection {
copy_command = copy_command.arg("--substitute-on-destination");
}