diff options
| author | Owen Jacobson <owen@grimoire.ca> | 2025-07-24 22:32:27 -0400 |
|---|---|---|
| committer | Owen Jacobson <owen@grimoire.ca> | 2025-07-24 22:32:27 -0400 |
| commit | b63380b251d04dd92f06aa5bbc22a72ca3e4bf8e (patch) | |
| tree | 3956ec457131ce049fd91f2f53309bc0620fffe2 /src/cli.rs | |
| parent | 2e42057694851b82574e0a406ded429fb95a07fa (diff) | |
wip: 83B78D40-D7CB-4419-9FE7-E7D858909443
Diffstat (limited to 'src/cli.rs')
| -rw-r--r-- | src/cli.rs | 22 |
1 files changed, 17 insertions, 5 deletions
@@ -16,7 +16,9 @@ use tokio::net; use crate::{ app::App, - clock, db, routes, + clock, db, + push::vapid, + routes, umask::{self, Umask}, }; @@ -26,10 +28,8 @@ use crate::{ /// arguments for the `pilcrow` server: /// /// ```no_run -/// # use pilcrow::cli::Error; -/// # /// # #[tokio::main] -/// # async fn main() -> Result<(), Error> { +/// # async fn main() -> Result<(), impl std::error::Error> { /// use clap::Parser; /// use pilcrow::cli::Args; /// @@ -67,6 +67,14 @@ pub struct Args { /// upgrades #[arg(short = 'D', long, env, default_value = "sqlite://pilcrow.db.backup")] backup_database_url: String, + + /// Base64-encoded VAPID public key for web push notifications. + #[arg(long, env)] + vapid_public_key: String, + + /// Base64-encoded VAPID public key for web push notifications. + #[arg(long, env)] + vapid_private_key: vapid::PrivateKey, } impl Args { @@ -90,7 +98,10 @@ impl Args { self.umask.set(); let pool = self.pool().await?; - let app = App::from(pool); + let vapid_public_key = self.vapid_public_key.clone(); + let vapid_signer = self.vapid_private_key.as_signature_builder()?; + + let app = App::from(pool, vapid_public_key, vapid_signer); let app = routes::routes(&app) .route_layer(middleware::from_fn(clock::middleware)) .route_layer(middleware::map_response(Self::server_info())) @@ -141,6 +152,7 @@ fn started_msg(listener: &net::TcpListener) -> io::Result<String> { #[error(transparent)] enum Error { Io(#[from] io::Error), + WebPush(#[from] web_push::WebPushError), Database(#[from] db::Error), Umask(#[from] umask::Error), } |
