From 2ed328af79c34e4fdf9ef57ead899696dfedbd43 Mon Sep 17 00:00:00 2001 From: Jamie Pine Date: Sat, 13 Sep 2025 17:26:06 -0700 Subject: [PATCH] refactor: Update argument handling and imports across CLI domains - Refactored argument handling in the job and library domains to improve clarity and consistency. - Updated imports to use the correct input types for actions in the library and location modules. - Enhanced type annotations for better readability and maintainability in the codebase. --- apps/cli/src/domains/index/args.rs | 2 +- apps/cli/src/domains/index/mod.rs | 15 +++++++++------ apps/cli/src/domains/job/args.rs | 2 +- apps/cli/src/domains/library/args.rs | 2 +- apps/cli/src/domains/library/mod.rs | 16 ++++++++++------ apps/cli/src/domains/location/mod.rs | 11 ++++++----- apps/cli/src/util/mod.rs | 1 + 7 files changed, 29 insertions(+), 20 deletions(-) diff --git a/apps/cli/src/domains/index/args.rs b/apps/cli/src/domains/index/args.rs index 1e0aa61e4..c9a8a290f 100644 --- a/apps/cli/src/domains/index/args.rs +++ b/apps/cli/src/domains/index/args.rs @@ -1,5 +1,5 @@ use clap::{Args, ValueEnum}; -use std::path::{Path, PathBuf}; +use std::path::PathBuf; use uuid::Uuid; use sd_core::{ diff --git a/apps/cli/src/domains/index/mod.rs b/apps/cli/src/domains/index/mod.rs index 917a2715e..e03fae27e 100644 --- a/apps/cli/src/domains/index/mod.rs +++ b/apps/cli/src/domains/index/mod.rs @@ -6,7 +6,10 @@ use clap::Subcommand; use crate::util::prelude::*; use crate::{context::Context, util::error::CliError}; -use sd_core::ops::{indexing::action::IndexOutput, libraries::list::query::ListLibrariesQuery}; +use sd_core::{ + infra::job::types::JobId, + ops::libraries::list::query::ListLibrariesQuery, +}; use self::args::*; @@ -40,13 +43,13 @@ pub async fn run(ctx: &Context, cmd: IndexCmd) -> Result<()> { anyhow::bail!(errors.join("; ")); } - let out: IndexOutput = execute_action!(ctx, input); + let out: JobId = execute_action!(ctx, input); print_output!(ctx, out, |_| { println!("Indexing request submitted"); }); } IndexCmd::QuickScan(args) => { - let libs = execute_query!(ctx, ListLibrariesQuery::basic()); + let libs: Vec = execute_query!(ctx, ListLibrariesQuery::basic()); let library_id = match libs.len() { 1 => libs[0].id, _ => { @@ -55,20 +58,20 @@ pub async fn run(ctx: &Context, cmd: IndexCmd) -> Result<()> { }; let input = args.to_input(library_id)?; - let out: IndexOutput = execute_action!(ctx, input); + let out: JobId = execute_action!(ctx, input); print_output!(ctx, out, |_| { println!("Quick scan request submitted"); }); } IndexCmd::Browse(args) => { - let libs = execute_query!(ctx, ListLibrariesQuery::basic()); + let libs: Vec = execute_query!(ctx, ListLibrariesQuery::basic()); let library_id = match libs.len() { 1 => libs[0].id, _ => anyhow::bail!("Specify --library for browse when multiple libraries exist"), }; let input = args.to_input(library_id)?; - let out: IndexOutput = execute_action!(ctx, input); + let out: JobId = execute_action!(ctx, input); print_output!(ctx, out, |_| { println!("Browse request submitted"); }); diff --git a/apps/cli/src/domains/job/args.rs b/apps/cli/src/domains/job/args.rs index 32ff2bfdf..5ae38daf0 100644 --- a/apps/cli/src/domains/job/args.rs +++ b/apps/cli/src/domains/job/args.rs @@ -16,7 +16,7 @@ pub struct JobListArgs { } impl JobListArgs { - pub fn to_query(&self, library_id: Uuid) -> JobListQuery { + pub fn to_query(&self, _library_id: Uuid) -> JobListQuery { JobListQuery { status: self.status.as_deref().and_then(|s| s.parse::().ok()), } diff --git a/apps/cli/src/domains/library/args.rs b/apps/cli/src/domains/library/args.rs index df3a10f91..993491c58 100644 --- a/apps/cli/src/domains/library/args.rs +++ b/apps/cli/src/domains/library/args.rs @@ -3,7 +3,7 @@ use uuid::Uuid; use sd_core::ops::libraries::{ create::input::LibraryCreateInput, - delete::action::LibraryDeleteInput, + delete::input::LibraryDeleteInput, session::set_current::SetCurrentLibraryInput, }; diff --git a/apps/cli/src/domains/library/mod.rs b/apps/cli/src/domains/library/mod.rs index 734a889e0..0cddd8036 100644 --- a/apps/cli/src/domains/library/mod.rs +++ b/apps/cli/src/domains/library/mod.rs @@ -7,7 +7,7 @@ use crate::util::prelude::*; use crate::context::Context; use sd_core::ops::libraries::{ - create::output::LibraryCreateOutput, + create::{input::LibraryCreateInput, output::LibraryCreateOutput}, delete::output::LibraryDeleteOutput, list::query::ListLibrariesQuery, session::set_current::SetCurrentLibraryOutput, @@ -30,7 +30,8 @@ pub enum LibraryCmd { pub async fn run(ctx: &Context, cmd: LibraryCmd) -> Result<()> { match cmd { LibraryCmd::Create(args) => { - let out: LibraryCreateOutput = execute_action!(ctx, args.into()); + let input: LibraryCreateInput = args.into(); + let out: LibraryCreateOutput = execute_action!(ctx, input); print_output!(ctx, &out, |o: &LibraryCreateOutput| { println!( "Created library {} with ID {} at {}", @@ -39,12 +40,14 @@ pub async fn run(ctx: &Context, cmd: LibraryCmd) -> Result<()> { }); } LibraryCmd::Switch(args) => { - let out: SetCurrentLibraryOutput = execute_action!(ctx, args.into()); + let library_id = args.id; + let input: sd_core::ops::libraries::session::set_current::SetCurrentLibraryInput = args.into(); + let out: SetCurrentLibraryOutput = execute_action!(ctx, input); print_output!(ctx, &out, |o: &SetCurrentLibraryOutput| { if o.success { - println!("Switched to library {}", args.id); + println!("Switched to library {}", library_id); } else { - println!("Failed to switch to library {}", args.id); + println!("Failed to switch to library {}", library_id); } }); } @@ -67,7 +70,8 @@ pub async fn run(ctx: &Context, cmd: LibraryCmd) -> Result<()> { format!("This will remove library {} from Spacedrive (data will remain). Continue?", args.library_id) }; confirm_or_abort(&msg, args.yes)?; - let out: LibraryDeleteOutput = execute_action!(ctx, args.into()); + let input: sd_core::ops::libraries::delete::input::LibraryDeleteInput = args.into(); + let out: LibraryDeleteOutput = execute_action!(ctx, input); print_output!(ctx, &out, |o: &LibraryDeleteOutput| { println!("Deleted library {}", o.library_id); }); diff --git a/apps/cli/src/domains/location/mod.rs b/apps/cli/src/domains/location/mod.rs index 52c151a36..94c7c7c3b 100644 --- a/apps/cli/src/domains/location/mod.rs +++ b/apps/cli/src/domains/location/mod.rs @@ -7,8 +7,7 @@ use crate::util::prelude::*; use crate::context::Context; use sd_core::ops::locations::{ - action::LocationAddInput, - add::output::LocationAddOutput, + add::{action::LocationAddInput, output::LocationAddOutput}, list::{output::LocationsListOutput, query::LocationsListQuery}, remove::output::LocationRemoveOutput, rescan::output::LocationRescanOutput, @@ -44,20 +43,22 @@ pub async fn run(ctx: &Context, cmd: LocationCmd) -> Result<()> { println!("No locations found"); return; } - for loc in o.locations { + for loc in &o.locations { println!("- {} {}", loc.id, loc.path.display()); } }); } LocationCmd::Remove(args) => { confirm_or_abort(&format!("This will remove location {} from the library. Continue?", args.location_id), args.yes)?; - let out: LocationRemoveOutput = execute_action!(ctx, args.into()); + let input: sd_core::ops::locations::remove::action::LocationRemoveInput = args.into(); + let out: LocationRemoveOutput = execute_action!(ctx, input); print_output!(ctx, &out, |o: &LocationRemoveOutput| { println!("Removed location {}", o.location_id); }); } LocationCmd::Rescan(args) => { - let out: LocationRescanOutput = execute_action!(ctx, args.into()); + let input: sd_core::ops::locations::rescan::action::LocationRescanInput = args.into(); + let out: LocationRescanOutput = execute_action!(ctx, input); print_output!(ctx, &out, |o: &LocationRescanOutput| { println!("Rescan requested for {}", o.location_id); }); diff --git a/apps/cli/src/util/mod.rs b/apps/cli/src/util/mod.rs index 815406f21..138f9a256 100644 --- a/apps/cli/src/util/mod.rs +++ b/apps/cli/src/util/mod.rs @@ -1,3 +1,4 @@ +pub mod confirm; pub mod error; pub mod macros; pub mod output;