Compare commits
2 Commits
v1.2.0
...
504d10bccc
Author | SHA1 | Date | |
---|---|---|---|
504d10bccc
|
|||
d9ac349d58
|
929
Cargo.lock
generated
929
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
12
Cargo.toml
12
Cargo.toml
@ -1,18 +1,10 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "expose-dir-via-http"
|
name = "expose-dir-via-http"
|
||||||
version = "1.2.0"
|
version = "1.0.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[lints.rust]
|
|
||||||
unsafe_code = "forbid"
|
|
||||||
|
|
||||||
[lints.clippy]
|
|
||||||
pedantic = { level = "warn", priority = -1 }
|
|
||||||
todo = "warn"
|
|
||||||
unwrap_used = "warn"
|
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
actix-web = { version = "4" }
|
actix-web = { version = "4", features = ["experimental-io-uring"] }
|
||||||
actix-files = "0.6"
|
actix-files = "0.6"
|
||||||
clap = { version = "4", features = ["cargo", "derive"] }
|
clap = { version = "4", features = ["cargo", "derive"] }
|
||||||
|
|
||||||
|
23
src/main.rs
23
src/main.rs
@ -1,7 +1,6 @@
|
|||||||
use std::{
|
use std::{
|
||||||
|
env,
|
||||||
net::{IpAddr, SocketAddr},
|
net::{IpAddr, SocketAddr},
|
||||||
num::NonZeroUsize,
|
|
||||||
path::PathBuf,
|
|
||||||
thread::available_parallelism,
|
thread::available_parallelism,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -12,8 +11,8 @@ use clap::{crate_name, crate_version, Parser};
|
|||||||
#[clap(name = crate_name!(), version = crate_version!())]
|
#[clap(name = crate_name!(), version = crate_version!())]
|
||||||
struct Args {
|
struct Args {
|
||||||
/// Directory to expose
|
/// Directory to expose
|
||||||
#[clap(default_value = ".", value_parser = parse_valid_dir)]
|
#[clap(default_value = ".")]
|
||||||
dir: PathBuf,
|
dir: String,
|
||||||
|
|
||||||
/// IP address to use
|
/// IP address to use
|
||||||
#[clap(default_value = "0.0.0.0")]
|
#[clap(default_value = "0.0.0.0")]
|
||||||
@ -24,15 +23,6 @@ struct Args {
|
|||||||
port: u16,
|
port: u16,
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_valid_dir(dir: &str) -> Result<PathBuf, String> {
|
|
||||||
let path = std::path::Path::new(dir);
|
|
||||||
if path.is_dir() {
|
|
||||||
Ok(path.to_path_buf())
|
|
||||||
} else {
|
|
||||||
Err(format!("{} is not a valid directory", path.display()))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[actix_web::main]
|
#[actix_web::main]
|
||||||
async fn main() -> std::io::Result<()> {
|
async fn main() -> std::io::Result<()> {
|
||||||
let args = Args::parse();
|
let args = Args::parse();
|
||||||
@ -40,10 +30,7 @@ async fn main() -> std::io::Result<()> {
|
|||||||
let dir = args.dir;
|
let dir = args.dir;
|
||||||
let sock = SocketAddr::new(args.ip, args.port);
|
let sock = SocketAddr::new(args.ip, args.port);
|
||||||
|
|
||||||
println!(
|
println!("Starting HTTP server on {sock} exposing dir {dir}");
|
||||||
"Starting HTTP server on {sock} exposing dir {}",
|
|
||||||
dir.display()
|
|
||||||
);
|
|
||||||
|
|
||||||
HttpServer::new(move || {
|
HttpServer::new(move || {
|
||||||
App::new().service(
|
App::new().service(
|
||||||
@ -52,7 +39,7 @@ async fn main() -> std::io::Result<()> {
|
|||||||
.prefer_utf8(true),
|
.prefer_utf8(true),
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
.workers(available_parallelism().map_or(1, NonZeroUsize::get))
|
.workers(available_parallelism().unwrap().get())
|
||||||
.bind(sock)?
|
.bind(sock)?
|
||||||
.run()
|
.run()
|
||||||
.await
|
.await
|
||||||
|
Reference in New Issue
Block a user