2022-10-25 12:51:59 +03:00
|
|
|
use clap::Parser;
|
|
|
|
use lazy_static::lazy_static;
|
2022-10-12 17:13:21 +02:00
|
|
|
use std::convert::Infallible;
|
|
|
|
use std::fmt;
|
2022-07-07 19:45:31 +03:00
|
|
|
use std::net::IpAddr;
|
2022-10-12 17:13:21 +02:00
|
|
|
use std::str::FromStr;
|
2022-06-03 17:24:34 +01:00
|
|
|
|
|
|
|
lazy_static! {
|
|
|
|
pub static ref ARGS: Args = Args::parse();
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Parser, Debug, Clone)]
|
|
|
|
#[clap(author, version, about, long_about = None)]
|
|
|
|
pub struct Args {
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_AUTH_USERNAME")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub auth_username: Option<String>,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_AUTH_PASSWORD")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub auth_password: Option<String>,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_EDITABLE")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub editable: bool,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_FOOTER_TEXT")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub footer_text: Option<String>,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_HIDE_FOOTER")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub hide_footer: bool,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_HIDE_HEADER")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub hide_header: bool,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_HIDE_LOGO")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub hide_logo: bool,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_NO_LISTING")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub no_listing: bool,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_HIGHLIGHTSYNTAX")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub highlightsyntax: bool,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(short, long, env = "MICROBIN_PORT", default_value_t = 8080)]
|
2022-07-07 19:45:31 +03:00
|
|
|
pub port: u16,
|
|
|
|
|
2022-07-20 08:50:23 +02:00
|
|
|
#[clap(short, long, env="MICROBIN_BIND", default_value_t = IpAddr::from([0, 0, 0, 0]))]
|
2022-07-07 19:45:31 +03:00
|
|
|
pub bind: IpAddr,
|
2022-06-03 17:24:34 +01:00
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_PRIVATE")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub private: bool,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_PURE_HTML")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub pure_html: bool,
|
|
|
|
|
2022-10-12 17:42:42 +02:00
|
|
|
#[clap(long, env="MICROBIN_PUBLIC_PATH", default_value_t = PublicUrl(String::from("")))]
|
2022-10-12 17:13:21 +02:00
|
|
|
pub public_path: PublicUrl,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_READONLY")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub readonly: bool,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_TITLE")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub title: Option<String>,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(short, long, env = "MICROBIN_THREADS", default_value_t = 1)]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub threads: u8,
|
|
|
|
|
2022-10-25 12:51:59 +03:00
|
|
|
#[clap(long, env = "MICROBIN_WIDE")]
|
2022-06-03 17:24:34 +01:00
|
|
|
pub wide: bool,
|
2022-10-25 12:51:59 +03:00
|
|
|
|
|
|
|
#[clap(short, long, env = "MICROBIN_NO_FILE_UPLOAD")]
|
2022-09-30 22:10:43 -08:00
|
|
|
pub no_file_upload: bool,
|
2022-11-01 21:15:13 +08:00
|
|
|
|
|
|
|
#[clap(long, env = "MICROBIN_HASH_IDS")]
|
|
|
|
pub hash_ids: bool,
|
2022-10-12 17:13:21 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Debug, Clone)]
|
|
|
|
pub struct PublicUrl(pub String);
|
|
|
|
|
|
|
|
impl fmt::Display for PublicUrl {
|
|
|
|
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
|
|
write!(f, "{}", self.0)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
impl FromStr for PublicUrl {
|
|
|
|
type Err = Infallible;
|
|
|
|
|
|
|
|
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
|
|
|
let uri = s.strip_suffix('/').unwrap_or(s).to_owned();
|
|
|
|
Ok(PublicUrl(uri))
|
|
|
|
}
|
2022-10-25 12:51:59 +03:00
|
|
|
}
|