Implemented cli args

This commit is contained in:
Gvidas Juknevičius 2024-03-23 22:28:03 +02:00
parent d22d3a71c8
commit 46e3eea247
Signed by: MCorange
GPG Key ID: 12B1346D720B7FBB
5 changed files with 152 additions and 4 deletions

113
Cargo.lock generated
View File

@ -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"

View File

@ -2,12 +2,17 @@
name = "personal-website"
version = "0.1.0"
edition = "2021"
authors = [
"xomf",
"mcorange <mcorange@mcorangehq.xyz>"
]
[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"] }

18
src/cli.rs Normal file
View File

@ -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
}

View File

@ -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()),
]

View File

@ -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}");