// SPDX-FileCopyrightText: 2024 Simon Bruder // // SPDX-License-Identifier: AGPL-3.0-or-later use std::net::{IpAddr, Ipv6Addr}; use clap::Parser; /// A lightweight inventory management system #[derive(Clone, Parser, Debug)] #[command(version, about)] pub struct Config { /// Database URL of PostgreSQL database #[arg(long, env)] pub database_url: String, /// Secret key for encrypting session cookie /// /// Can be generated with head -c 64 /dev/urandom | base64 -w0 #[arg(long, env)] pub secret_key: Option, /// Address for HTTP server to listen on #[arg(long, env, default_value_t = IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1)))] pub listen_address: std::net::IpAddr, /// Port for HTTP server to listen on #[arg(long, env, default_value_t = 8080)] pub listen_port: u16, /// Superuser password #[arg(long, env)] pub superuser_password: String, }