Compare commits

..

No commits in common. "8b94b630bed66e7ca16e5958e044fe6d951d0818" and "b5a2c750c56bd471d1db016e3a39e99992df6040" have entirely different histories.

3 changed files with 10 additions and 12 deletions

2
Cargo.lock generated
View File

@ -562,7 +562,7 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]] [[package]]
name = "expose-dir-via-http" name = "expose-dir-via-http"
version = "1.3.1" version = "1.3.0"
dependencies = [ dependencies = [
"actix-files", "actix-files",
"actix-web", "actix-web",

View File

@ -1,6 +1,6 @@
[package] [package]
name = "expose-dir-via-http" name = "expose-dir-via-http"
version = "1.3.1" version = "1.3.0"
edition = "2024" edition = "2024"
[lints.rust] [lints.rust]

View File

@ -2,12 +2,11 @@ use std::{
net::{IpAddr, SocketAddr}, net::{IpAddr, SocketAddr},
num::NonZeroUsize, num::NonZeroUsize,
path::PathBuf, path::PathBuf,
sync::Arc,
thread::available_parallelism, thread::available_parallelism,
}; };
use actix_web::{App, HttpServer}; use actix_web::{App, HttpServer};
use clap::{Parser, crate_name, crate_version}; use clap::{crate_name, crate_version, Parser};
#[derive(Parser, Debug)] #[derive(Parser, Debug)]
#[clap(name = crate_name!(), version = crate_version!())] #[clap(name = crate_name!(), version = crate_version!())]
@ -26,11 +25,11 @@ struct Args {
} }
fn parse_valid_dir(dir: &str) -> Result<PathBuf, String> { fn parse_valid_dir(dir: &str) -> Result<PathBuf, String> {
let path = PathBuf::from(dir); let path = std::path::Path::new(dir);
match std::fs::metadata(&path) { if path.is_dir() {
Ok(metadata) if metadata.is_dir() => Ok(path), Ok(path.to_path_buf())
Ok(_) => Err(format!("{} is not a directory", path.display())), } else {
Err(e) => Err(format!("Error accessing {}: {}", path.display(), e)), Err(format!("{} is not a valid directory", path.display()))
} }
} }
@ -38,7 +37,7 @@ fn parse_valid_dir(dir: &str) -> Result<PathBuf, String> {
async fn main() -> std::io::Result<()> { async fn main() -> std::io::Result<()> {
let args = Args::parse(); let args = Args::parse();
let dir = Arc::new(args.dir); let dir = args.dir;
let sock = SocketAddr::new(args.ip, args.port); let sock = SocketAddr::new(args.ip, args.port);
println!( println!(
@ -47,9 +46,8 @@ async fn main() -> std::io::Result<()> {
); );
HttpServer::new(move || { HttpServer::new(move || {
let dir = dir.clone();
App::new().service( App::new().service(
actix_files::Files::new("/", dir.as_ref()) actix_files::Files::new("/", dir.clone())
.show_files_listing() .show_files_listing()
.prefer_utf8(true), .prefer_utf8(true),
) )