From df3cf70682eb4c15391a02dd501628610a9c31ae Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Fri, 22 Nov 2024 15:57:05 -0700 Subject: [PATCH] feat(cli): Support for listing the available disk space for all provisioned root folders in both Radarr and Sonarr --- src/cli/radarr/list_command_handler.rs | 9 +++++++++ src/cli/radarr/list_command_handler_tests.rs | 2 ++ src/cli/sonarr/list_command_handler.rs | 9 +++++++++ src/cli/sonarr/list_command_handler_tests.rs | 2 ++ 4 files changed, 22 insertions(+) diff --git a/src/cli/radarr/list_command_handler.rs b/src/cli/radarr/list_command_handler.rs index d2b9019..7d0962e 100644 --- a/src/cli/radarr/list_command_handler.rs +++ b/src/cli/radarr/list_command_handler.rs @@ -24,6 +24,8 @@ pub enum RadarrListCommand { Collections, #[command(about = "List all active downloads in Radarr")] Downloads, + #[command(about = "List disk space details for all provisioned root folders in Radarr")] + DiskSpace, #[command(about = "List all Radarr indexers")] Indexers, #[command(about = "Fetch Radarr logs")] @@ -109,6 +111,13 @@ impl<'a, 'b> CliCommandHandler<'a, 'b, RadarrListCommand> for RadarrListCommandH .await?; serde_json::to_string_pretty(&resp)? } + RadarrListCommand::DiskSpace => { + let resp = self + .network + .handle_network_event(RadarrEvent::GetDiskSpace.into()) + .await?; + serde_json::to_string_pretty(&resp)? + } RadarrListCommand::Indexers => { let resp = self .network diff --git a/src/cli/radarr/list_command_handler_tests.rs b/src/cli/radarr/list_command_handler_tests.rs index f922de9..080e0df 100644 --- a/src/cli/radarr/list_command_handler_tests.rs +++ b/src/cli/radarr/list_command_handler_tests.rs @@ -29,6 +29,7 @@ mod tests { "blocklist", "collections", "downloads", + "disk-space", "indexers", "movies", "quality-profiles", @@ -121,6 +122,7 @@ mod tests { #[case(RadarrListCommand::Blocklist, RadarrEvent::GetBlocklist)] #[case(RadarrListCommand::Collections, RadarrEvent::GetCollections)] #[case(RadarrListCommand::Downloads, RadarrEvent::GetDownloads)] + #[case(RadarrListCommand::DiskSpace, RadarrEvent::GetDiskSpace)] #[case(RadarrListCommand::Indexers, RadarrEvent::GetIndexers)] #[case(RadarrListCommand::Movies, RadarrEvent::GetMovies)] #[case(RadarrListCommand::QualityProfiles, RadarrEvent::GetQualityProfiles)] diff --git a/src/cli/sonarr/list_command_handler.rs b/src/cli/sonarr/list_command_handler.rs index 2e2b85e..ff35417 100644 --- a/src/cli/sonarr/list_command_handler.rs +++ b/src/cli/sonarr/list_command_handler.rs @@ -22,6 +22,8 @@ pub enum SonarrListCommand { Blocklist, #[command(about = "List all active downloads in Sonarr")] Downloads, + #[command(about = "List disk space details for all provisioned root folders in Sonarr")] + DiskSpace, #[command(about = "List the episodes for the series with the given ID")] Episodes { #[arg( @@ -119,6 +121,13 @@ impl<'a, 'b> CliCommandHandler<'a, 'b, SonarrListCommand> for SonarrListCommandH .await?; serde_json::to_string_pretty(&resp)? } + SonarrListCommand::DiskSpace => { + let resp = self + .network + .handle_network_event(SonarrEvent::GetDiskSpace.into()) + .await?; + serde_json::to_string_pretty(&resp)? + } SonarrListCommand::Episodes { series_id } => { let resp = self .network diff --git a/src/cli/sonarr/list_command_handler_tests.rs b/src/cli/sonarr/list_command_handler_tests.rs index 41d8a1f..9d4bab5 100644 --- a/src/cli/sonarr/list_command_handler_tests.rs +++ b/src/cli/sonarr/list_command_handler_tests.rs @@ -28,6 +28,7 @@ mod tests { "blocklist", "series", "downloads", + "disk-space", "quality-profiles", "indexers", "queued-events", @@ -198,6 +199,7 @@ mod tests { #[rstest] #[case(SonarrListCommand::Blocklist, SonarrEvent::GetBlocklist)] #[case(SonarrListCommand::Downloads, SonarrEvent::GetDownloads)] + #[case(SonarrListCommand::DiskSpace, SonarrEvent::GetDiskSpace)] #[case(SonarrListCommand::Indexers, SonarrEvent::GetIndexers)] #[case(SonarrListCommand::QualityProfiles, SonarrEvent::GetQualityProfiles)] #[case(SonarrListCommand::QueuedEvents, SonarrEvent::GetQueuedEvents)]