From dccb859175c32cea9aded9b7e54354f37f282368 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Sun, 7 Jun 2026 16:18:54 +0800 Subject: Replace show.workspace with show.workspace-dir command --- mling/src/proj_mgr/mod.rs | 9 ++++-- mling/src/proj_mgr/show_directories.rs | 55 ++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 mling/src/proj_mgr/show_directories.rs (limited to 'mling') diff --git a/mling/src/proj_mgr/mod.rs b/mling/src/proj_mgr/mod.rs index 3e94a3f..b282203 100644 --- a/mling/src/proj_mgr/mod.rs +++ b/mling/src/proj_mgr/mod.rs @@ -9,8 +9,13 @@ pub mod metadata; mod show_binaries; pub use show_binaries::*; +mod show_directories; +pub use show_directories::*; + dispatcher!("show.binaries"); -dispatcher!("show.workspace"); +dispatcher!("show.workspace-dir", + CMDShowWorkspaceDirectory => EntryShowWorkspaceDirectory +); dispatcher!("show.target-dir", CMDShowTargetDirectories => EntryShowTargetDirectories ); @@ -18,6 +23,6 @@ dispatcher!("show.target-dir", #[program_setup] pub fn project_manager_setup(p: &mut Program) { p.with_dispatcher(CMDShowBinaries); - p.with_dispatcher(CMDShowWorkspace); + p.with_dispatcher(CMDShowWorkspaceDirectory); p.with_dispatcher(CMDShowTargetDirectories); } diff --git a/mling/src/proj_mgr/show_directories.rs b/mling/src/proj_mgr/show_directories.rs new file mode 100644 index 0000000..32020c9 --- /dev/null +++ b/mling/src/proj_mgr/show_directories.rs @@ -0,0 +1,55 @@ +use colored::Colorize; +use mingling::{ + Groupped, + macros::{chain, pack, r_println, renderer}, +}; +use serde::Serialize; + +use crate::{ + EntryShowTargetDirectories, EntryShowWorkspaceDirectory, Next, metadata::read_metadata, + res::ResManifestPath, +}; + +#[derive(Serialize, Groupped)] +pub struct ResultWorkspaceDirectory { + pub path: String, +} + +#[derive(Serialize, Groupped)] +pub struct ResultTargetDirectory { + pub path: String, +} + +#[chain] +pub fn handle_show_workspace_directory( + _args: EntryShowWorkspaceDirectory, + manifest_path: &ResManifestPath, +) -> Next { + let metadata = read_metadata(manifest_path.resolved()).unwrap(); + ResultWorkspaceDirectory { + path: metadata.workspace_root, + } + .to_render() +} + +#[chain] +pub fn handle_show_target_directory( + _args: EntryShowTargetDirectories, + manifest_path: &ResManifestPath, +) -> Next { + let metadata = read_metadata(manifest_path.resolved()).unwrap(); + ResultTargetDirectory { + path: metadata.target_directory, + } + .to_render() +} + +#[renderer] +pub fn render_workspace_directory(prev: ResultWorkspaceDirectory) { + r_println!("{}", prev.path.bright_cyan().bold()); +} + +#[renderer] +pub fn render_target_directory(prev: ResultTargetDirectory) { + r_println!("{}", prev.path.bright_cyan().bold()); +} -- cgit