diff --git a/.forgejo/workflows/ci.yaml b/.forgejo/workflows/ci.yaml index d2cc0c8..9ca8bff 100644 --- a/.forgejo/workflows/ci.yaml +++ b/.forgejo/workflows/ci.yaml @@ -11,6 +11,8 @@ jobs: uses: actions/checkout@v4 - name: ๐Ÿฆ€ Setup Rust cache uses: https://github.com/Swatinem/rust-cache@v2 + with: + cache-on-failure: "true" - name: ๐Ÿ“Ž Clippy run: cargo clippy --all -- -D warnings - name: ๐Ÿงช Test diff --git a/src/app.rs b/src/app.rs index 44f1ec9..4db3274 100644 --- a/src/app.rs +++ b/src/app.rs @@ -67,7 +67,7 @@ impl App { Self } - fn new_state(&self) -> AppState { + fn new_state(&self) -> Result { AppState::new() } @@ -76,7 +76,7 @@ impl App { let listener = tokio::net::TcpListener::bind(address).await?; tracing::info!("Listening on http://{address}"); - let state = self.new_state(); + let state = self.new_state()?; let real_ip_header = state.i.cfg.load().real_ip_header.clone(); let router = Router::new() // Prevent search indexing since artifactview serves temporary artifacts @@ -445,13 +445,13 @@ impl App { } impl AppState { - pub fn new() -> Self { - let cfg = Config::default(); + pub fn new() -> Result { + let cfg = Config::new()?; let cache = Cache::new(cfg.clone()); let api = ArtifactApi::new(cfg.clone()); - Self { + Ok(Self { i: Arc::new(AppInner { cfg, cache, api }), - } + }) } /// Run garbage collection in the background if necessary diff --git a/src/config.rs b/src/config.rs index 2b09e91..8047516 100644 --- a/src/config.rs +++ b/src/config.rs @@ -91,7 +91,7 @@ impl Default for ConfigData { impl Default for Config { fn default() -> Self { - Self::new().expect("Could not initialize config") + Self::from_data(ConfigData::default()).unwrap() } }