forked from lix-project/lix-installer
Correctly expected error in default planner if nix installed (#151)
* Correctly expected error in default planner if nix installed * fixup
This commit is contained in:
parent
55906e15bb
commit
e27d01f221
|
@ -80,13 +80,16 @@ impl CommandExecute for Install {
|
||||||
match existing_receipt {
|
match existing_receipt {
|
||||||
Some(existing_receipt) => {
|
Some(existing_receipt) => {
|
||||||
if existing_receipt.planner.typetag_name() != chosen_planner.typetag_name() {
|
if existing_receipt.planner.typetag_name() != chosen_planner.typetag_name() {
|
||||||
return Err(eyre!("Found existing plan in `{RECEIPT_LOCATION}` which used a different planner, try uninstalling the existing install"))
|
eprintln!("{}", format!("Found existing plan in `{RECEIPT_LOCATION}` which used a different planner, try uninstalling the existing install").red());
|
||||||
|
return Ok(ExitCode::FAILURE)
|
||||||
}
|
}
|
||||||
if existing_receipt.planner.settings().map_err(|e| eyre!(e))? != chosen_planner.settings().map_err(|e| eyre!(e))? {
|
if existing_receipt.planner.settings().map_err(|e| eyre!(e))? != chosen_planner.settings().map_err(|e| eyre!(e))? {
|
||||||
return Err(eyre!("Found existing plan in `{RECEIPT_LOCATION}` which used different planner settings, try uninstalling the existing install"))
|
eprintln!("{}", format!("Found existing plan in `{RECEIPT_LOCATION}` which used different planner settings, try uninstalling the existing install").red());
|
||||||
|
return Ok(ExitCode::FAILURE)
|
||||||
}
|
}
|
||||||
if existing_receipt.actions.iter().all(|v| v.state == ActionState::Completed) {
|
if existing_receipt.actions.iter().all(|v| v.state == ActionState::Completed) {
|
||||||
return Err(eyre!("Found existing plan in `{RECEIPT_LOCATION}`, with the same settings, already completed, try uninstalling and reinstalling if Nix isn't working"))
|
eprintln!("{}", format!("Found existing plan in `{RECEIPT_LOCATION}`, with the same settings, already completed, try uninstalling and reinstalling if Nix isn't working").red());
|
||||||
|
return Ok(ExitCode::FAILURE)
|
||||||
}
|
}
|
||||||
existing_receipt
|
existing_receipt
|
||||||
} ,
|
} ,
|
||||||
|
@ -105,6 +108,23 @@ impl CommandExecute for Install {
|
||||||
let builtin_planner = BuiltinPlanner::from_common_settings(settings)
|
let builtin_planner = BuiltinPlanner::from_common_settings(settings)
|
||||||
.await
|
.await
|
||||||
.map_err(|e| eyre::eyre!(e))?;
|
.map_err(|e| eyre::eyre!(e))?;
|
||||||
|
match existing_receipt {
|
||||||
|
Some(existing_receipt) => {
|
||||||
|
if existing_receipt.planner.typetag_name() != builtin_planner.typetag_name() {
|
||||||
|
eprintln!("{}", format!("Found existing plan in `{RECEIPT_LOCATION}` which used a different planner, try uninstalling the existing install").red());
|
||||||
|
return Ok(ExitCode::FAILURE)
|
||||||
|
}
|
||||||
|
if existing_receipt.planner.settings().map_err(|e| eyre!(e))? != builtin_planner.settings().map_err(|e| eyre!(e))? {
|
||||||
|
eprintln!("{}", format!("Found existing plan in `{RECEIPT_LOCATION}` which used different planner settings, try uninstalling the existing install").red());
|
||||||
|
return Ok(ExitCode::FAILURE)
|
||||||
|
}
|
||||||
|
if existing_receipt.actions.iter().all(|v| v.state == ActionState::Completed) {
|
||||||
|
eprintln!("{}", format!("Found existing plan in `{RECEIPT_LOCATION}`, with the same settings, already completed, try uninstalling and reinstalling if Nix isn't working").red());
|
||||||
|
return Ok(ExitCode::FAILURE)
|
||||||
|
}
|
||||||
|
existing_receipt
|
||||||
|
},
|
||||||
|
None => {
|
||||||
let res = builtin_planner.plan().await;
|
let res = builtin_planner.plan().await;
|
||||||
match res {
|
match res {
|
||||||
Ok(plan) => plan,
|
Ok(plan) => plan,
|
||||||
|
@ -117,6 +137,8 @@ impl CommandExecute for Install {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
(Some(_), Some(_)) => return Err(eyre!("`--plan` conflicts with passing a planner, a planner creates plans, so passing an existing plan doesn't make sense")),
|
(Some(_), Some(_)) => return Err(eyre!("`--plan` conflicts with passing a planner, a planner creates plans, so passing an existing plan doesn't make sense")),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -168,6 +168,22 @@ impl BuiltinPlanner {
|
||||||
BuiltinPlanner::SteamDeck(i) => i.boxed(),
|
BuiltinPlanner::SteamDeck(i) => i.boxed(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn typetag_name(&self) -> &'static str {
|
||||||
|
match self {
|
||||||
|
BuiltinPlanner::LinuxMulti(i) => i.typetag_name(),
|
||||||
|
BuiltinPlanner::DarwinMulti(i) => i.typetag_name(),
|
||||||
|
BuiltinPlanner::SteamDeck(i) => i.typetag_name(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn settings(&self) -> Result<HashMap<String, serde_json::Value>, InstallSettingsError> {
|
||||||
|
match self {
|
||||||
|
BuiltinPlanner::LinuxMulti(i) => i.settings(),
|
||||||
|
BuiltinPlanner::DarwinMulti(i) => i.settings(),
|
||||||
|
BuiltinPlanner::SteamDeck(i) => i.settings(),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// An error originating from a [`Planner`]
|
/// An error originating from a [`Planner`]
|
||||||
|
|
Loading…
Reference in a new issue