aboutsummaryrefslogtreecommitdiff
path: root/mingling_cli/src/pkg_mgr/cmd_pkg_disable.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-08-17 05:49:19 +0800
committer魏曹先生 <1992414357@qq.com>2026-08-17 05:49:19 +0800
commit57c53affe3542cb6bd4e79ee4c18f20a1bd76b2d (patch)
tree1cd4aef44cb7a45a8cd9d520b598f5f181e24c76 /mingling_cli/src/pkg_mgr/cmd_pkg_disable.rs
parentef23cd944402939605c78a4a853ef6e33af02c21 (diff)
refactor!: replace pack! macros with derive-based pipeline types
Remove the `pack!`, `pack_err!`, `pack_structural!`, and `pack_err_structural!` macros, replacing all pipeline type definitions with `#[derive(Grouped)]` and `#[derive(Grouped, Wrap)]` attributes. This changes the generated struct shape from named-field structs with an `inner` field to tuple structs accessed via `.0`, and removes the auto-generated `name` and `info` fields from error types.
Diffstat (limited to 'mingling_cli/src/pkg_mgr/cmd_pkg_disable.rs')
-rw-r--r--mingling_cli/src/pkg_mgr/cmd_pkg_disable.rs26
1 files changed, 14 insertions, 12 deletions
diff --git a/mingling_cli/src/pkg_mgr/cmd_pkg_disable.rs b/mingling_cli/src/pkg_mgr/cmd_pkg_disable.rs
index 041bb09..b4989eb 100644
--- a/mingling_cli/src/pkg_mgr/cmd_pkg_disable.rs
+++ b/mingling_cli/src/pkg_mgr/cmd_pkg_disable.rs
@@ -1,8 +1,8 @@
use std::{fs, io};
use mingling::{
- Grouped, RenderResult, Routable, ShellContext, Suggest, SuggestItem,
- macros::{arg, chain, command, completion, metadata, pack, pack_err, renderer, routeify},
+ Grouped, RenderResult, Routable, ShellContext, Suggest, SuggestItem, Wrap,
+ macros::{arg, chain, command, completion, metadata, renderer, routeify},
metadata::Description,
picker::{EntryPicker, PickerArg},
};
@@ -18,10 +18,12 @@ use crate::{
/// Positional argument: package name
pub static ARG_NAME: PickerArg<String> = arg![String];
-pack_err!(ErrorPackageNotEnabled = String);
+#[derive(Grouped, Wrap)]
+pub struct ErrorPackageNotEnabled(String);
// The name of the package to disable
-pack!(StatePkgDisable = String);
+#[derive(Grouped, Wrap)]
+pub struct StatePkgDisable(String);
#[derive(Debug, Default, Grouped)]
pub struct ResultPkgDisable {
@@ -37,30 +39,30 @@ pub fn desc_pkg_disable() -> Description {
#[command(node = "pkg-disable", routeify)]
pub fn package_disable(args: EntryPkgDisable, packages_dir: &ResPackagesDir) -> Next {
let name = args
- .pick_or_route(&ARG_NAME, || ErrorPackageNameRequired::default().to_chain())
+ .pick_or_route(&ARG_NAME, || ErrorPackageNameRequired.to_chain())
.to_result()?;
let packages_dir = &packages_dir.path;
if packages_dir.as_os_str().is_empty() {
- return ErrorNoDataDirectory::default().to_chain();
+ return ErrorNoDataDirectory.to_chain();
}
if name.contains('/') || name.contains('\\') || name.contains("..") || name.contains('@') {
- return ErrorPackageSpecInvalid::new(name).to_chain();
+ return ErrorPackageSpecInvalid(name).to_chain();
}
- StatePkgDisable::new(name).to_chain()
+ StatePkgDisable(name).to_chain()
}
#[chain(routeify)]
pub fn handle_state_pkg_disable(p: StatePkgDisable, packages_dir: &ResPackagesDir) -> Next {
- let name = p.inner;
+ let name = p.0;
let packages_dir = &packages_dir.path;
if packages_dir.as_os_str().is_empty() {
- return ErrorNoDataDirectory::default().to_chain();
+ return ErrorNoDataDirectory.to_chain();
}
let file = packages_dir.join(&name);
if !file.is_file() {
- return ErrorPackageNotEnabled::new(name).to_chain();
+ return ErrorPackageNotEnabled(name).to_chain();
}
fs::remove_file(&file).map_err(|e| {
io::Error::new(
@@ -86,7 +88,7 @@ pub fn render_result_pkg_disable(result: ResultPkgDisable) -> RenderResult {
#[renderer]
pub fn render_error_package_not_enabled(err: ErrorPackageNotEnabled) -> RenderResult {
let mut r = RenderResult::new();
- eprintln_cargo!(r, "package is not enabled: {}", err.info);
+ eprintln_cargo!(r, "package is not enabled: {}", err.0);
r
}