From a4422e26e5bf707c36f3dc6b861f4e93c09a8ba1 Mon Sep 17 00:00:00 2001 From: Miguel Palhas Date: Tue, 25 Aug 2026 06:28:20 +0100 Subject: [PATCH] style(arr): formatting --- crates/arr-api/src/health.rs | 31 +++++++++++++++++++------------ crates/arr-daemon/src/broken.rs | 18 ++++++++++++++---- crates/arr-daemon/src/main.rs | 10 ++++++++-- crates/arr-subs/src/command.rs | 5 ++++- crates/arr-subs/src/podnapisi.rs | 4 +--- crates/arr-subs/src/sync.rs | 4 +--- web/src/main.ts | 12 ++++++++++-- 7 files changed, 57 insertions(+), 27 deletions(-) diff --git a/crates/arr-api/src/health.rs b/crates/arr-api/src/health.rs index a660390..757e65d 100644 --- a/crates/arr-api/src/health.rs +++ b/crates/arr-api/src/health.rs @@ -136,8 +136,12 @@ pub struct HealthReport { pub async fn health(State(state): State) -> Json { // Independent network probes; serialising them would make the endpoint // as slow as the sum of the timeouts. - let (prowlarr, transmission, tmdb, subtitles) = - tokio::join!(probe_prowlarr(&state), probe_transmission(&state), probe_tmdb(&state), probe_subtitles(&state)); + let (prowlarr, transmission, tmdb, subtitles) = tokio::join!( + probe_prowlarr(&state), + probe_transmission(&state), + probe_tmdb(&state), + probe_subtitles(&state) + ); let status = if [prowlarr.status, transmission.status, tmdb.status] .into_iter() @@ -307,9 +311,7 @@ fn check_from(result: Result<(), arr_subs::Error>) -> Check { fn backend_check(result: Result<(), backend_error::Error>) -> Check { match result { Ok(()) => Check::ok(), - Err(backend_error::Error::Unauthorized { .. }) => { - Check::unreachable("credentials refused") - } + Err(backend_error::Error::Unauthorized { .. }) => Check::unreachable("credentials refused"), Err(error) => Check::unreachable(error.to_string()), } } @@ -330,11 +332,11 @@ mod tests { use std::sync::Arc; use arr_db::Db; + use arr_subs::translate as backend; use arr_subs::{ Backend, CandidateId, DownloadFuture, Provider, ProviderId, SearchFuture, SearchRequest, Syncer, }; - use arr_subs::translate as backend; use crate::{router, AppState, Upstreams}; @@ -497,7 +499,10 @@ mod tests { set_enabled(&state, r#"["ok","bad"]"#, None).await; let state = state.with_subtitle_providers(vec![ Arc::new(StubProvider { id: "ok", up: true }), - Arc::new(StubProvider { id: "bad", up: false }), + Arc::new(StubProvider { + id: "bad", + up: false, + }), ]); let body = report(state).await; @@ -505,7 +510,10 @@ mod tests { assert_eq!(body["subtitles"]["providers"][0]["status"], "ok"); assert_eq!(body["subtitles"]["providers"][1]["id"], "bad"); assert_eq!(body["subtitles"]["providers"][1]["status"], "unreachable"); - assert_eq!(body["subtitles"]["providers"][1]["detail"], "credentials refused"); + assert_eq!( + body["subtitles"]["providers"][1]["detail"], + "credentials refused" + ); } #[tokio::test] @@ -524,10 +532,9 @@ mod tests { async fn an_unreachable_engine_fails_the_whole_report() { let (_dir, state) = application().await; set_enabled(&state, "[]", Some("openai")).await; - let state = state - .with_translation_backends(vec![Arc::new(StubBackend { - detail: "connection refused", - })]); + let state = state.with_translation_backends(vec![Arc::new(StubBackend { + detail: "connection refused", + })]); let body = report(state).await; assert_eq!(body["subtitles"]["translation"]["status"], "unreachable"); diff --git a/crates/arr-daemon/src/broken.rs b/crates/arr-daemon/src/broken.rs index afafed0..99319ac 100644 --- a/crates/arr-daemon/src/broken.rs +++ b/crates/arr-daemon/src/broken.rs @@ -58,7 +58,11 @@ impl SubtitleUpstreams { let mut lamps = Vec::new(); for id in &providers_enabled { - let reachable = match self.providers.iter().find(|p| p.id().as_str() == id.as_str()) { + let reachable = match self + .providers + .iter() + .find(|p| p.id().as_str() == id.as_str()) + { Some(provider) => provider.probe().await.is_ok(), None => false, }; @@ -246,7 +250,9 @@ mod tests { /// lamps the seed row would otherwise put in use. async fn database() -> (tempfile::TempDir, Db) { let dir = tempfile::tempdir().unwrap(); - let db = Db::connect(dir.path().join("broken-test.db")).await.unwrap(); + let db = Db::connect(dir.path().join("broken-test.db")) + .await + .unwrap(); db.migrate().await.unwrap(); sqlx::query("UPDATE subtitle_settings SET providers_enabled = '[]'") .execute(db.pool()) @@ -320,7 +326,9 @@ mod tests { .await; let dir = tempfile::tempdir().unwrap(); - let db = Db::connect(dir.path().join("broken-subs.db")).await.unwrap(); + let db = Db::connect(dir.path().join("broken-subs.db")) + .await + .unwrap(); db.migrate().await.unwrap(); // The seed row already enables opensubtitles and podnapisi; none are // attached to this action. @@ -394,7 +402,9 @@ mod tests { let first = action.tick(&db).await; assert_eq!(first.len(), 1, "only the missing binary notifies"); assert!( - first.iter().any(|outcome| format!("{outcome:?}").contains("alass")), + first + .iter() + .any(|outcome| format!("{outcome:?}").contains("alass")), "{first:?}" ); } diff --git a/crates/arr-daemon/src/main.rs b/crates/arr-daemon/src/main.rs index 54ef2a4..419a14c 100644 --- a/crates/arr-daemon/src/main.rs +++ b/crates/arr-daemon/src/main.rs @@ -303,7 +303,8 @@ fn reconcile_loop( tmdb: Option<&Arc>, notifier: &Notifier, translators: &Translators, -) -> Result<(ReconcileLoop, Option, Option), Error> { let reconcile = ReconcileLoop::new(database.clone()); +) -> Result<(ReconcileLoop, Option, Option), Error> { + let reconcile = ReconcileLoop::new(database.clone()); let seeding = SeedingRules::new( SeedingLimits { ratio: config.seed_ratio_limit, @@ -435,7 +436,12 @@ fn register_broken( }; reconcile.register( Tick::Reconcile, - BrokenAction::new(broken_upstreams, broken_subtitles, notifier.clone(), operator_topic), + BrokenAction::new( + broken_upstreams, + broken_subtitles, + notifier.clone(), + operator_topic, + ), ) } diff --git a/crates/arr-subs/src/command.rs b/crates/arr-subs/src/command.rs index b20a333..0938c25 100644 --- a/crates/arr-subs/src/command.rs +++ b/crates/arr-subs/src/command.rs @@ -218,7 +218,10 @@ impl Backend for Command { Box::pin(async move { let payload = format!( "{}\n[]\n", - system_prompt(&Language::Other("en".to_owned()), &Language::PortuguesePortugal) + system_prompt( + &Language::Other("en".to_owned()), + &Language::PortuguesePortugal + ) ); let mut tokens = argv(&self.config.template); for token in &mut tokens { diff --git a/crates/arr-subs/src/podnapisi.rs b/crates/arr-subs/src/podnapisi.rs index 78e3bba..1d399ea 100644 --- a/crates/arr-subs/src/podnapisi.rs +++ b/crates/arr-subs/src/podnapisi.rs @@ -259,9 +259,7 @@ impl Provider for Podnapisi { /// Anonymous, so the lamp is reachability alone (#200): the site root /// answers, no quota spent. fn probe(&self) -> crate::ProbeFuture<'_> { - Box::pin(async move { - self.send(self.base_url.clone(), None).await.map(|_| ()) - }) + Box::pin(async move { self.send(self.base_url.clone(), None).await.map(|_| ()) }) } } diff --git a/crates/arr-subs/src/sync.rs b/crates/arr-subs/src/sync.rs index 4c2d4bf..85e318a 100644 --- a/crates/arr-subs/src/sync.rs +++ b/crates/arr-subs/src/sync.rs @@ -704,8 +704,6 @@ mod tests { ))); // `sh` is on PATH of every machine that runs these tests. assert!(super::binary_present(std::ffi::OsStr::new("sh"))); - assert!(Syncer::new() - .with_binary(executable.as_os_str()) - .present()); + assert!(Syncer::new().with_binary(executable.as_os_str()).present()); } } diff --git a/web/src/main.ts b/web/src/main.ts index c009457..bfbfa20 100644 --- a/web/src/main.ts +++ b/web/src/main.ts @@ -1,4 +1,10 @@ -import { type Check, type CheckStatus, type Probe, type SubtitleHealth, probeHealth } from "./health"; +import { + type Check, + type CheckStatus, + type Probe, + probeHealth, + type SubtitleHealth, +} from "./health"; import { fetchLibrary, type LibrarySeries, @@ -213,7 +219,9 @@ function renderSubtitles(subLane: HTMLElement, subs: SubtitleHealth) { entries.push({ name: "alass", role: "timing sync", check: subs.alass }); entries.push({ name: "ffmpeg", role: "track extraction", check: subs.ffmpeg }); - subLane.replaceChildren(...entries.map((entry) => subtitleModule(entry.name, entry.role, entry.check))); + subLane.replaceChildren( + ...entries.map((entry) => subtitleModule(entry.name, entry.role, entry.check)), + ); subLane.hidden = false; }