2021-04-15 02:52:54 +00:00
|
|
|
use std::num::{NonZeroU16, NonZeroU64};
|
2021-03-26 01:06:54 +00:00
|
|
|
use std::path::PathBuf;
|
2021-03-26 02:58:07 +00:00
|
|
|
use std::sync::atomic::AtomicBool;
|
2021-03-26 01:06:54 +00:00
|
|
|
|
2021-04-18 02:13:36 +00:00
|
|
|
use clap::{crate_authors, crate_description, crate_version, Clap};
|
2021-03-26 01:06:54 +00:00
|
|
|
|
2021-03-26 02:58:07 +00:00
|
|
|
// Validate tokens is an atomic because it's faster than locking on rwlock.
|
|
|
|
pub static VALIDATE_TOKENS: AtomicBool = AtomicBool::new(false);
|
|
|
|
// We use an atomic here because it's better for us to not pass the config
|
|
|
|
// everywhere.
|
|
|
|
pub static SEND_SERVER_VERSION: AtomicBool = AtomicBool::new(false);
|
|
|
|
|
2021-03-26 04:07:32 +00:00
|
|
|
#[derive(Clap, Clone)]
|
2021-04-18 02:13:36 +00:00
|
|
|
#[clap(version = crate_version!(), author = crate_authors!(), about = crate_description!())]
|
2021-03-26 01:06:54 +00:00
|
|
|
pub struct CliArgs {
|
|
|
|
/// The port to listen on.
|
|
|
|
#[clap(short, long, default_value = "42069", env = "PORT")]
|
|
|
|
pub port: NonZeroU16,
|
|
|
|
/// How large, in bytes, the in-memory cache should be. Note that this does
|
|
|
|
/// not include runtime memory usage.
|
|
|
|
#[clap(long, env = "MEM_CACHE_QUOTA_BYTES")]
|
2021-04-15 02:52:54 +00:00
|
|
|
pub memory_quota: NonZeroU64,
|
2021-03-26 01:06:54 +00:00
|
|
|
/// How large, in bytes, the on-disk cache should be. Note that actual
|
|
|
|
/// values may be larger for metadata information.
|
|
|
|
#[clap(long, env = "DISK_CACHE_QUOTA_BYTES")]
|
2021-04-15 02:52:54 +00:00
|
|
|
pub disk_quota: u64,
|
2021-03-26 01:06:54 +00:00
|
|
|
/// Sets the location of the disk cache.
|
|
|
|
#[clap(long, default_value = "./cache", env = "DISK_CACHE_PATH")]
|
|
|
|
pub cache_path: PathBuf,
|
|
|
|
/// The network speed to advertise to Mangadex@Home control server.
|
|
|
|
#[clap(long, env = "MAX_NETWORK_SPEED")]
|
2021-04-15 02:52:54 +00:00
|
|
|
pub network_speed: NonZeroU64,
|
2021-03-26 01:06:54 +00:00
|
|
|
/// Whether or not to provide the Server HTTP header to clients. This is
|
|
|
|
/// useful for debugging, but is generally not recommended for security
|
|
|
|
/// reasons.
|
2021-03-26 02:58:07 +00:00
|
|
|
#[clap(long, env = "ENABLE_SERVER_STRING", takes_value = false)]
|
2021-03-26 01:06:54 +00:00
|
|
|
pub enable_server_string: bool,
|
2021-04-18 02:13:36 +00:00
|
|
|
#[clap(short, long, conflicts_with("memory-quota"), env = "LOW_MEMORY_MODE")]
|
2021-04-15 02:11:00 +00:00
|
|
|
pub low_memory: bool,
|
2021-04-18 03:19:27 +00:00
|
|
|
#[clap(short, long, parse(from_occurrences))]
|
|
|
|
pub verbose: usize,
|
2021-03-26 01:06:54 +00:00
|
|
|
}
|