diff --git a/Cargo.lock b/Cargo.lock index a3c3426..7fa0735 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -282,6 +282,54 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "anstream" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + [[package]] name = "anyhow" version = "1.0.81" @@ -458,6 +506,52 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "clap" +version = "4.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.53", +] + +[[package]] +name = "clap_lex" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + [[package]] name = "convert_case" version = "0.4.0" @@ -685,6 +779,12 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "http" version = "0.2.12" @@ -971,6 +1071,7 @@ dependencies = [ "actix-web-lab", "anyhow", "askama", + "clap", "log", "simplelog", ] @@ -1237,6 +1338,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "strsim" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" + [[package]] name = "syn" version = "1.0.109" @@ -1449,6 +1556,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + [[package]] name = "version_check" version = "0.9.4" diff --git a/Cargo.toml b/Cargo.toml index 32cf208..20d32f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,12 +2,17 @@ name = "personal-website" version = "0.1.0" edition = "2021" +authors = [ + "xomf", + "mcorange " +] [dependencies] actix-web = "4.5.1" actix-web-lab = "0.20.2" anyhow = "1.0.81" askama = "0.12.1" +clap = { version = "4.5.3", features = ["derive"] } log = "0.4.21" simplelog = { version = "0.12.2", features = ["paris"] } # time = { version = "0.3.34", features = ["macros"] } diff --git a/src/cli.rs b/src/cli.rs new file mode 100644 index 0000000..add4712 --- /dev/null +++ b/src/cli.rs @@ -0,0 +1,18 @@ + +use clap::Parser; + +#[derive(Debug, Clone, Parser)] +#[command(version, about, long_about = None)] +pub struct CliArgs { + /// Port to bind to + #[arg(short, long, default_value_t=8080)] + pub port: u16, + + /// Host ip to bind to, usually not required to change + #[arg(short, long, default_value="0.0.0.0")] + pub host: String, + + /// Extra debugging output + #[arg(long, short)] + pub debug: bool +} \ No newline at end of file diff --git a/src/logger.rs b/src/logger.rs index 1976406..3c49b72 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -1,17 +1,24 @@ use simplelog::*; +use crate::cli::CliArgs; -pub fn init_logger() { + +pub fn init_logger(cli: &CliArgs) { // TODO: figure out what these do let config = ConfigBuilder::new() .build(); - + + let level = if cli.debug { + LevelFilter::Debug + } else { + LevelFilter::Info + }; CombinedLogger::init( vec![ - TermLogger::new(LevelFilter::Debug, config, TerminalMode::Mixed, ColorChoice::Auto), + TermLogger::new(level, config, TerminalMode::Mixed, ColorChoice::Auto), // TODO: Set up loggin to file // WriteLogger::new(LevelFilter::Info, Config::default(), File::create("my_rust_binary.log").unwrap()), ] diff --git a/src/main.rs b/src/main.rs index dbefdf4..7dffd97 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,14 @@ +use clap::Parser; + mod public; mod logger; +mod cli; #[actix_web::main] async fn main() -> std::io::Result<()> { - logger::init_logger(); + let cli = cli::CliArgs::parse(); + logger::init_logger(&cli); + if let Err(e) = public::start_actix().await { log::error!("Actix had an error: {e}");