diff options
author | xengineering <mail2xengineering@protonmail.com> | 2021-03-01 20:12:02 +0100 |
---|---|---|
committer | xengineering <mail2xengineering@protonmail.com> | 2021-03-01 20:32:55 +0100 |
commit | 537b2828a4911eabb44c6b10d3f86ef00f6165da (patch) | |
tree | 702a2cf2353c33c99c2a546be8f29ed65110a18b | |
parent | 92ce74d92e5fe57e59cefcf454373c1a26022cf6 (diff) | |
download | web-template-537b2828a4911eabb44c6b10d3f86ef00f6165da.tar web-template-537b2828a4911eabb44c6b10d3f86ef00f6165da.tar.zst web-template-537b2828a4911eabb44c6b10d3f86ef00f6165da.zip |
Implement CLI Parameters with clap
-rw-r--r-- | actix/Cargo.lock | 63 | ||||
-rw-r--r-- | actix/Cargo.toml | 1 | ||||
-rw-r--r-- | actix/Makefile | 1 | ||||
-rw-r--r-- | actix/src/main.rs | 28 |
4 files changed, 91 insertions, 2 deletions
diff --git a/actix/Cargo.lock b/actix/Cargo.lock index b28575c..52cd0db 100644 --- a/actix/Cargo.lock +++ b/actix/Cargo.lock @@ -5,6 +5,7 @@ name = "actix" version = "0.1.0" dependencies = [ "actix-web", + "clap", ] [[package]] @@ -293,6 +294,15 @@ dependencies = [ ] [[package]] +name = "ansi_term" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] name = "async-trait" version = "0.1.42" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -304,6 +314,17 @@ dependencies = [ ] [[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi 0.3.9", +] + +[[package]] name = "autocfg" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -446,6 +467,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] +name = "clap" +version = "2.33.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +dependencies = [ + "ansi_term", + "atty", + "bitflags", + "strsim", + "textwrap", + "unicode-width", + "vec_map", +] + +[[package]] name = "const_fn" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1405,6 +1441,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" [[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + +[[package]] name = "syn" version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1416,6 +1458,15 @@ dependencies = [ ] [[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] name = "thiserror" version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1642,6 +1693,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" [[package]] +name = "unicode-width" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" + +[[package]] name = "unicode-xid" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -1660,6 +1717,12 @@ dependencies = [ ] [[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] name = "version_check" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/actix/Cargo.toml b/actix/Cargo.toml index bd2bc84..abbda7b 100644 --- a/actix/Cargo.toml +++ b/actix/Cargo.toml @@ -8,3 +8,4 @@ edition = "2018" [dependencies] actix-web = "3" +clap = "2.33.3" diff --git a/actix/Makefile b/actix/Makefile index b815ebe..0222e71 100644 --- a/actix/Makefile +++ b/actix/Makefile @@ -2,7 +2,6 @@ debug: cargo build - ./target/debug/actix release: cargo build --release diff --git a/actix/src/main.rs b/actix/src/main.rs index 4f03d08..f11798f 100644 --- a/actix/src/main.rs +++ b/actix/src/main.rs @@ -1,6 +1,10 @@ +// vim: tabstop=4 shiftwidth=4 expandtab + +extern crate clap; use actix_web::{get, post, web, App, HttpResponse, HttpServer, Responder}; + #[get("/")] async fn hello() -> impl Responder { HttpResponse::Ok().body("Hello world!") @@ -17,13 +21,35 @@ async fn manual_hello() -> impl Responder { #[actix_web::main] async fn main() -> std::io::Result<()> { + + let arg_matches = clap::App::new("Actix Web Server") + .about("Executable to run the web-template Web Server") + .arg(clap::Arg::with_name("address") + .help("The address to which the server binds") + .long("address") + .short("a") + .takes_value(true) + .default_value("127.0.0.1")) + .arg(clap::Arg::with_name("port") + .help("The port to which the server binds") + .long("port") + .short("p") + .takes_value(true) + .default_value("8080")) + .get_matches(); + + let address = arg_matches.value_of("address").unwrap(); + let port = arg_matches.value_of("port").unwrap(); + + println!("Binding to {}:{}", address, port); + HttpServer::new(|| { App::new() .service(hello) .service(echo) .route("/hey", web::get().to(manual_hello)) }) - .bind("127.0.0.1:8080")? + .bind(format!("{}:{}", address, port))? .run() .await } |