From c6dcaf95d4ccdcfe2af81d7dff43a5c440eca7da Mon Sep 17 00:00:00 2001 From: sigoden Date: Sun, 19 Feb 2023 22:48:41 +0800 Subject: [PATCH] chore: hide env keys from help text (#176) --- README.md | 50 ++++++++++++++++++++++++++++---------------------- src/args.rs | 22 +++++++++++++++++++++- 2 files changed, 49 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 5278491..276565e 100644 --- a/README.md +++ b/README.md @@ -51,30 +51,30 @@ Dufs is a distinctive utility file server - https://github.com/sigoden/dufs Usage: dufs [OPTIONS] [root] Arguments: - [root] Specific path to serve [env: DUFS_ROOT=] [default: .] + [root] Specific path to serve [default: .] Options: - -b, --bind Specify bind address or unix socket [env: DUFS_BIND=] - -p, --port Specify port to listen on [env: DUFS_PORT=] [default: 5000] - --path-prefix Specify a path prefix [env: DUFS_PATH_PREFIX=] - --hidden Hide paths from directory listings, separated by `,` [env: DUFS_HIDDEN=] - -a, --auth Add auth for path [env: DUFS_AUTH=] - --auth-method Select auth method [env: DUFS_AUTH_METHOD=] [default: digest] [possible values: basic, digest] - -A, --allow-all Allow all operations [env: DUFS_ALLOW_ALL=] - --allow-upload Allow upload files/folders [env: DUFS_ALLOW_UPLOAD=] - --allow-delete Allow delete files/folders [env: DUFS_ALLOW_DELETE=] - --allow-search Allow search files/folders [env: DUFS_ALLOW_SEARCH=] - --allow-symlink Allow symlink to files/folders outside root directory [env: DUFS_ALLOW_SYMLINK=] - --allow-archive Allow zip archive generation [env: DUFS_ALLOW_ARCHIVE=] - --enable-cors Enable CORS, sets `Access-Control-Allow-Origin: *` [env: DUFS_ENABLE_CORS=] - --render-index Serve index.html when requesting a directory, returns 404 if not found index.html [env: DUFS_RENDER_INDEX=] - --render-try-index Serve index.html when requesting a directory, returns directory listing if not found index.html [env: DUFS_RENDER_TRY_INDEX=] - --render-spa Serve SPA(Single Page Application) [env: DUFS_RENDER_SPA=] - --assets Use custom assets to override builtin assets [env: DUFS_ASSETS=] - --tls-cert Path to an SSL/TLS certificate to serve with HTTPS [env: DUFS_TLS_CERT=] - --tls-key Path to the SSL/TLS certificate's private key [env: DUFS_TLS_KEY=] - --log-format Customize http log format [env: DUFS_LOG_FORMAT=] - --completions Print shell completion script for [env: DUFS_COMPLETIONS=] [possible values: bash, elvish, fish, powershell, zsh] + -b, --bind Specify bind address or unix socket + -p, --port Specify port to listen on [default: 5000] + --path-prefix Specify a path prefix + --hidden Hide paths from directory listings, separated by `,` + -a, --auth Add auth for path + --auth-method Select auth method [default: digest] [possible values: basic, digest] + -A, --allow-all Allow all operations + --allow-upload Allow upload files/folders + --allow-delete Allow delete files/folders + --allow-search Allow search files/folders + --allow-symlink Allow symlink to files/folders outside root directory + --allow-archive Allow zip archive generation + --enable-cors Enable CORS, sets `Access-Control-Allow-Origin: *` + --render-index Serve index.html when requesting a directory, returns 404 if not found index.html + --render-try-index Serve index.html when requesting a directory, returns directory listing if not found index.html + --render-spa Serve SPA(Single Page Application) + --assets Use custom assets to override builtin assets + --tls-cert Path to an SSL/TLS certificate to serve with HTTPS + --tls-key Path to the SSL/TLS certificate's private key + --log-format Customize http log format + --completions Print shell completion script for [possible values: bash, elvish, fish, powershell, zsh] -h, --help Print help information -V, --version Print version information ``` @@ -274,6 +274,12 @@ dufs --log-format '$remote_addr $remote_user "$request" $status' -a /@admin:admi 2022-08-06T07:04:37+08:00 INFO - 127.0.0.1 admin "GET /" 200 ``` +## Environment variables + +All options can be set using environment variables prefixed with `DUFS_`. + +`dufs --port 8080 --allow-all` is equal to `DUFS_PORT=8080 DUFS_ALLOW_ALL=true dufs`. + ### Customize UI Dufs allows users to customize the UI with your own assets. diff --git a/src/args.rs b/src/args.rs index 31dbe67..a720951 100644 --- a/src/args.rs +++ b/src/args.rs @@ -27,6 +27,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("root") .env("DUFS_ROOT") + .hide_env(true) .default_value(".") .value_parser(value_parser!(PathBuf)) .help("Specific path to serve"), @@ -34,6 +35,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("bind") .env("DUFS_BIND") + .hide_env(true) .short('b') .long("bind") .help("Specify bind address or unix socket") @@ -44,6 +46,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("port") .env("DUFS_PORT") + .hide_env(true) .short('p') .long("port") .default_value("5000") @@ -54,6 +57,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("path-prefix") .env("DUFS_PATH_PREFIX") + .hide_env(true) .long("path-prefix") .value_name("path") .help("Specify a path prefix"), @@ -61,6 +65,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("hidden") .env("DUFS_HIDDEN") + .hide_env(true) .long("hidden") .help("Hide paths from directory listings, separated by `,`") .value_name("value"), @@ -68,6 +73,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("auth") .env("DUFS_AUTH") + .hide_env(true) .short('a') .long("auth") .help("Add auth for path") @@ -78,6 +84,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("auth-method") .env("DUFS_AUTH_METHOD") + .hide_env(true) .long("auth-method") .help("Select auth method") .value_parser(PossibleValuesParser::new(["basic", "digest"])) @@ -87,6 +94,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("allow-all") .env("DUFS_ALLOW_ALL") + .hide_env(true) .short('A') .long("allow-all") .action(ArgAction::SetTrue) @@ -95,6 +103,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("allow-upload") .env("DUFS_ALLOW_UPLOAD") + .hide_env(true) .long("allow-upload") .action(ArgAction::SetTrue) .help("Allow upload files/folders"), @@ -102,6 +111,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("allow-delete") .env("DUFS_ALLOW_DELETE") + .hide_env(true) .long("allow-delete") .action(ArgAction::SetTrue) .help("Allow delete files/folders"), @@ -109,6 +119,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("allow-search") .env("DUFS_ALLOW_SEARCH") + .hide_env(true) .long("allow-search") .action(ArgAction::SetTrue) .help("Allow search files/folders"), @@ -116,6 +127,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("allow-symlink") .env("DUFS_ALLOW_SYMLINK") + .hide_env(true) .long("allow-symlink") .action(ArgAction::SetTrue) .help("Allow symlink to files/folders outside root directory"), @@ -123,6 +135,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("allow-archive") .env("DUFS_ALLOW_ARCHIVE") + .hide_env(true) .long("allow-archive") .action(ArgAction::SetTrue) .help("Allow zip archive generation"), @@ -130,6 +143,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("enable-cors") .env("DUFS_ENABLE_CORS") + .hide_env(true) .long("enable-cors") .action(ArgAction::SetTrue) .help("Enable CORS, sets `Access-Control-Allow-Origin: *`"), @@ -137,6 +151,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("render-index") .env("DUFS_RENDER_INDEX") + .hide_env(true) .long("render-index") .action(ArgAction::SetTrue) .help("Serve index.html when requesting a directory, returns 404 if not found index.html"), @@ -144,6 +159,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("render-try-index") .env("DUFS_RENDER_TRY_INDEX") + .hide_env(true) .long("render-try-index") .action(ArgAction::SetTrue) .help("Serve index.html when requesting a directory, returns directory listing if not found index.html"), @@ -151,6 +167,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("render-spa") .env("DUFS_RENDER_SPA") + .hide_env(true) .long("render-spa") .action(ArgAction::SetTrue) .help("Serve SPA(Single Page Application)"), @@ -158,6 +175,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("assets") .env("DUFS_ASSETS") + .hide_env(true) .long("assets") .help("Use custom assets to override builtin assets") .value_parser(value_parser!(PathBuf)) @@ -169,6 +187,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("tls-cert") .env("DUFS_TLS_CERT") + .hide_env(true) .long("tls-cert") .value_name("path") .value_parser(value_parser!(PathBuf)) @@ -177,6 +196,7 @@ pub fn build_cli() -> Command { .arg( Arg::new("tls-key") .env("DUFS_TLS_KEY") + .hide_env(true) .long("tls-key") .value_name("path") .value_parser(value_parser!(PathBuf)) @@ -186,13 +206,13 @@ pub fn build_cli() -> Command { app.arg( Arg::new("log-format") .env("DUFS_LOG_FORMAT") + .hide_env(true) .long("log-format") .value_name("format") .help("Customize http log format"), ) .arg( Arg::new("completions") - .env("DUFS_COMPLETIONS") .long("completions") .value_name("shell") .value_parser(value_parser!(Shell))