Newer
Older

Louis
committed
pub use std::path::PathBuf;
pub use std::env::current_dir;

Louis
committed
Static file swerver and api mocker for local development.
For full documentation, visit https://swerve.louiscap.io.
General Options:
-h, --help Display this text
-q, --quiet Don't print anything to stdout
--license Show the GPL v3 license text
Web Server Options:
--no-index Don't serve index.html files for directory paths
-d=<path>, --dir=<path> Root directory; defaults to cwd
-p=<port>, --port=<port> Port; defaults to 8200
-a=<addr>, --address=<addr> Address to bind to (e.g. 10.0.0.15); defaults to localhost
-c=<path>, --config=<path> Path to the .swerve config file
-t=<num>, --threads=<num> Number of worker threads to use for serving files; defaults to 32
-u, --upload Support file uploads to '/upload'
-U=<path>, --upload-path=<path> Set the url path that will accept file uploads. Implies 'upload' flag if not present
Swerve Copyright (C) 2018 Louis Capitanchik
Licensed under GPLv3+
";
#[derive(Debug, Deserialize, Clone)]
pub struct Args {
pub flag_dir: Option<String>,
pub flag_port: Option<u16>,
pub flag_config: Option<String>,
pub flag_threads: Option<u16>,
pub flag_address: Option<String>,
pub flag_help: bool,
pub flag_quiet: bool,
pub flag_no_index: bool,
pub flag_upload: bool,
pub flag_upload_path: Option<String>,

Louis
committed
}
impl Args {
pub fn get_dir(&self) -> PathBuf {
let dir_flag = self.flag_dir.clone();
PathBuf::from(
dir_flag.unwrap_or(
current_dir().unwrap_or(
PathBuf::from("")
).to_string_lossy().into_owned())
)
}
}
impl Default for Args {
fn default() -> Self {
Args {
flag_port: Some(8000),
flag_config: None,
flag_threads: Some(32),
flag_address: Some(String::from("localhost")),
flag_help: false,
flag_quiet: false,
flag_no_index: false,
flag_upload: false,
flag_upload_path: None,
flag_license: false,
}
}