aboutsummaryrefslogtreecommitdiff
path: root/mingling_cli/src/pkg_mgr/cmd_install.rs
diff options
context:
space:
mode:
Diffstat (limited to 'mingling_cli/src/pkg_mgr/cmd_install.rs')
-rw-r--r--mingling_cli/src/pkg_mgr/cmd_install.rs43
1 files changed, 22 insertions, 21 deletions
diff --git a/mingling_cli/src/pkg_mgr/cmd_install.rs b/mingling_cli/src/pkg_mgr/cmd_install.rs
index 731ba98..8b2f3b7 100644
--- a/mingling_cli/src/pkg_mgr/cmd_install.rs
+++ b/mingling_cli/src/pkg_mgr/cmd_install.rs
@@ -2,8 +2,8 @@ use std::{env, fs, io, path::PathBuf, process::Command};
use cargo_metadata::TargetKind;
use mingling::{
- Grouped, LazyRes, RenderResult, Routable, ShellContext, Suggest,
- macros::{arg, chain, command, completion, metadata, pack_err, renderer, routeify, suggest},
+ Grouped, LazyRes, RenderResult, Routable, ShellContext, Suggest, Wrap,
+ macros::{arg, chain, command, completion, metadata, renderer, routeify, suggest},
metadata::Description,
picker::{EntryPicker, PickerArg, value::Flag},
};
@@ -15,9 +15,14 @@ use crate::{
println_cargo,
};
-pack_err!(ErrorBuildFailed = String);
-pack_err!(ErrorBinaryNotFound = String);
-pack_err!(ErrorPkgEnableFailed = String);
+#[derive(Grouped, Wrap)]
+pub struct ErrorBuildFailed(String);
+
+#[derive(Grouped, Wrap)]
+pub struct ErrorBinaryNotFound(String);
+
+#[derive(Grouped, Wrap)]
+pub struct ErrorPkgEnableFailed(String);
/// Flag: `--enable` — run `mling pkg-enable` after a successful install
/// to enable the package being installed.
@@ -75,13 +80,13 @@ pub fn install(
let metadata = metadata.get_ref().data();
let packages_dir = &packages_dir.path;
if packages_dir.as_os_str().is_empty() {
- return ErrorNoDataDirectory::default().to_chain();
+ return ErrorNoDataDirectory.to_chain();
}
let root_package = metadata
.root_package()
.or_else(|| metadata.workspace_packages().first().copied())
- .ok_or(ErrorRootPackageNotFound::default())?;
+ .ok_or(ErrorRootPackageNotFound)?;
StateInstallBuild {
workspace_root: metadata.workspace_root.clone().into_std_path_buf(),
@@ -103,11 +108,9 @@ pub fn handle_state_install_build(state: StateInstallBuild) -> Next {
.args(["build", "--release"])
.current_dir(&state.workspace_root)
.status()
- .map_err(|e| {
- ErrorBuildFailed::new(format!("failed to run `cargo build --release`: {e}"))
- })?;
+ .map_err(|e| ErrorBuildFailed(format!("failed to run `cargo build --release`: {e}")))?;
if !status.success() {
- return ErrorBuildFailed::new(format!("`cargo build --release` failed with {status}"))
+ return ErrorBuildFailed(format!("`cargo build --release` failed with {status}"))
.to_chain();
}
@@ -146,7 +149,7 @@ pub fn handle_state_install_copy(
let bin_file = format!("{}{}", target.name, state.exe_suffix);
let src = state.release_dir.join(&bin_file);
if !src.is_file() {
- return ErrorBinaryNotFound::new(bin_file).to_chain();
+ return ErrorBinaryNotFound(bin_file).to_chain();
}
let dst = state.install_dir.join(&bin_file);
fs::copy(&src, &dst).map_err(|e| {
@@ -181,7 +184,7 @@ pub fn handle_state_install_copy(
let root_package = metadata
.root_package()
.or_else(|| metadata.workspace_packages().first().copied())
- .ok_or(ErrorRootPackageNotFound::default())?;
+ .ok_or(ErrorRootPackageNotFound)?;
return StateInstallEnable {
install_dir: state.install_dir,
installed: state.installed,
@@ -207,13 +210,11 @@ pub fn handle_state_install_enable(state: StateInstallEnable) -> Next {
.args(["pkg-enable", &spec])
.status()
.map_err(|e| {
- ErrorPkgEnableFailed::new(format!("failed to run `mling pkg-enable {spec}`: {e}"))
+ ErrorPkgEnableFailed(format!("failed to run `mling pkg-enable {spec}`: {e}"))
})?;
if !status.success() {
- return ErrorPkgEnableFailed::new(format!(
- "`mling pkg-enable {spec}` failed with {status}"
- ))
- .to_chain();
+ return ErrorPkgEnableFailed(format!("`mling pkg-enable {spec}` failed with {status}"))
+ .to_chain();
}
ResultInstall {
@@ -236,21 +237,21 @@ pub fn render_result_install(result: ResultInstall) -> RenderResult {
#[renderer]
pub fn render_error_build_failed(err: ErrorBuildFailed) -> RenderResult {
let mut r = RenderResult::new();
- eprintln_cargo!(r, "{}", err.info);
+ eprintln_cargo!(r, "{}", err.0);
r
}
#[renderer]
pub fn render_error_binary_not_found(err: ErrorBinaryNotFound) -> RenderResult {
let mut r = RenderResult::new();
- eprintln_cargo!(r, "binary not found: {}", err.info);
+ eprintln_cargo!(r, "binary not found: {}", err.0);
r
}
#[renderer]
pub fn render_error_pkg_enable_failed(err: ErrorPkgEnableFailed) -> RenderResult {
let mut r = RenderResult::new();
- eprintln_cargo!(r, "{}", err.info);
+ eprintln_cargo!(r, "{}", err.0);
r
}