From cda3770092c5452c7051d0c5f45789d6895610fd Mon Sep 17 00:00:00 2001 From: Fabrice Reix Date: Thu, 18 Jan 2024 14:34:29 +0100 Subject: [PATCH] Generate hurlfmt options source/doc from spec --- docs/manual/hurlfmt.md | 40 +++++++-------- docs/spec/options/README.md | 2 + docs/spec/options/hurlfmt/check.option | 10 ++++ docs/spec/options/hurlfmt/color.option | 8 +++ docs/spec/options/hurlfmt/format.option | 7 +++ docs/spec/options/hurlfmt/in_place.option | 7 +++ docs/spec/options/hurlfmt/input_format.option | 7 +++ docs/spec/options/hurlfmt/no_color.option | 6 +++ docs/spec/options/hurlfmt/output.option | 7 +++ .../spec/options/hurlfmt/output_format.option | 7 +++ docs/spec/options/hurlfmt/standalone.option | 9 ++++ integration/hurlfmt/tests_ok/help.out.pattern | 23 ++++----- packages/hurlfmt/src/cli/options/commands.rs | 51 +++++++++---------- 13 files changed, 121 insertions(+), 63 deletions(-) create mode 100644 docs/spec/options/hurlfmt/check.option create mode 100644 docs/spec/options/hurlfmt/color.option create mode 100644 docs/spec/options/hurlfmt/format.option create mode 100644 docs/spec/options/hurlfmt/in_place.option create mode 100644 docs/spec/options/hurlfmt/input_format.option create mode 100644 docs/spec/options/hurlfmt/no_color.option create mode 100644 docs/spec/options/hurlfmt/output.option create mode 100644 docs/spec/options/hurlfmt/output_format.option create mode 100644 docs/spec/options/hurlfmt/standalone.option diff --git a/docs/manual/hurlfmt.md b/docs/manual/hurlfmt.md index d394ba239..cce162585 100644 --- a/docs/manual/hurlfmt.md +++ b/docs/manual/hurlfmt.md @@ -63,58 +63,52 @@ Fruit: Raspberry ### --check {#check} -Run in 'check' mode. Exits with 0 if input is formatted correctly, 1 otherwise. +Run in 'check' mode. Exits with 0 if input is formatted correctly, 1 otherwise. This can not be used with [--output](#output). This option is not stable yet. - ### --color {#color} Colorize Output. - + This can not be used [--in-place](#inplace). +### --in {#in} -### -h, --help {#help} +Specify input format: hurl or curl. -Usage help. - -### --in {#input-format} - -Specify input format: hurl (default) or curl - - -### --in-place {#inplace} +### --in-place {#in-place} Modify file in place. This can be used only with text output. +### --no-color {#no-color} -### --no-color {#nocolor} +Do not colorize output. -Do not colorize Output. +### --out {#out} +Specify output format: hurl, json or html. -### --out {#output-format} - - -Specify output format: hurl (default), json or html - -### -o, --output {#output} - -Write output to instead of stdout. +### -o, --output {#output} +Write output to FILE instead of stdout. ### --standalone {#standalone} Output full html file with css instead of html fragment (default). - + This can be used only with html output. +### -h, --help {#help} + +Usage help. + + ### -V, --version {#version} Prints version information diff --git a/docs/spec/options/README.md b/docs/spec/options/README.md index dbe346063..970fef5c2 100644 --- a/docs/spec/options/README.md +++ b/docs/spec/options/README.md @@ -18,6 +18,7 @@ This script insures that all `.option` files are well formatted. ```shell $ bin/spec/options/generate_source.py docs/spec/options/hurl/*.option > packages/hurl/src/cli/options/commands.rs +$ bin/spec/options/generate_source.py docs/spec/options/hurlfmt/*.option >packages/hurlfmt/src/cli/options/commands.rs ``` This script generates Rust source file for parsing command line option. @@ -26,6 +27,7 @@ This script generates Rust source file for parsing command line option. ```shell $ bin/spec/options/generate_man.py docs/spec/options/hurl/*.option +$ bin/spec/options/generate_man.py docs/spec/options/hurlfmt/*.option ``` This script generates (part of) man file for `hurl` / `hurlfmt`. diff --git a/docs/spec/options/hurlfmt/check.option b/docs/spec/options/hurlfmt/check.option new file mode 100644 index 000000000..7b8678976 --- /dev/null +++ b/docs/spec/options/hurlfmt/check.option @@ -0,0 +1,10 @@ +name: check +long: check +help: Run in 'check' mode +--- +Run in 'check' mode. Exits with 0 if input is formatted correctly, 1 otherwise. + +This can not be used with [--output](#output). + +This option is not stable yet. + diff --git a/docs/spec/options/hurlfmt/color.option b/docs/spec/options/hurlfmt/color.option new file mode 100644 index 000000000..f73dba8f6 --- /dev/null +++ b/docs/spec/options/hurlfmt/color.option @@ -0,0 +1,8 @@ +name: color +long: color +help: Colorize Output +conflict: no_color, in_place +--- +Colorize Output. + +This can not be used [--in-place](#inplace). diff --git a/docs/spec/options/hurlfmt/format.option b/docs/spec/options/hurlfmt/format.option new file mode 100644 index 000000000..1a9185c0b --- /dev/null +++ b/docs/spec/options/hurlfmt/format.option @@ -0,0 +1,7 @@ +name: format +long: format +value: FORMAT +help: Specify output format: hurl, json or html +deprecated: true +--- +Specify output format: hurl, json or html. diff --git a/docs/spec/options/hurlfmt/in_place.option b/docs/spec/options/hurlfmt/in_place.option new file mode 100644 index 000000000..9fc151ddd --- /dev/null +++ b/docs/spec/options/hurlfmt/in_place.option @@ -0,0 +1,7 @@ +name: in_place +long: in-place +help: Modify files in place +--- +Modify file in place. + +This can be used only with text output. diff --git a/docs/spec/options/hurlfmt/input_format.option b/docs/spec/options/hurlfmt/input_format.option new file mode 100644 index 000000000..392c654c4 --- /dev/null +++ b/docs/spec/options/hurlfmt/input_format.option @@ -0,0 +1,7 @@ +name: input_format +long: in +value: FORMAT +value_default: hurl +help: Specify input format: hurl or curl +--- +Specify input format: hurl or curl. diff --git a/docs/spec/options/hurlfmt/no_color.option b/docs/spec/options/hurlfmt/no_color.option new file mode 100644 index 000000000..6608c8942 --- /dev/null +++ b/docs/spec/options/hurlfmt/no_color.option @@ -0,0 +1,6 @@ +name: no_color +long: no-color +help: Do not colorize output +conflict: color +--- +Do not colorize output. diff --git a/docs/spec/options/hurlfmt/output.option b/docs/spec/options/hurlfmt/output.option new file mode 100644 index 000000000..2d3e321fa --- /dev/null +++ b/docs/spec/options/hurlfmt/output.option @@ -0,0 +1,7 @@ +name: output +long: output +short: o +value: FILE +help: Write to FILE instead of stdout +--- +Write output to FILE instead of stdout. diff --git a/docs/spec/options/hurlfmt/output_format.option b/docs/spec/options/hurlfmt/output_format.option new file mode 100644 index 000000000..93ba6bda3 --- /dev/null +++ b/docs/spec/options/hurlfmt/output_format.option @@ -0,0 +1,7 @@ +name: output_format +long: out +value: FORMAT +value_default: hurl +help: Specify output format: hurl, json or html +--- +Specify output format: hurl, json or html. diff --git a/docs/spec/options/hurlfmt/standalone.option b/docs/spec/options/hurlfmt/standalone.option new file mode 100644 index 000000000..0b9ef7b35 --- /dev/null +++ b/docs/spec/options/hurlfmt/standalone.option @@ -0,0 +1,9 @@ +name: standalone +long: standalone +help: Standalone HTML +conflict: no_color +--- +Output full html file with css instead of html fragment (default). + +This can be used only with html output. + diff --git a/integration/hurlfmt/tests_ok/help.out.pattern b/integration/hurlfmt/tests_ok/help.out.pattern index 6ddf6b097..41948983c 100644 --- a/integration/hurlfmt/tests_ok/help.out.pattern +++ b/integration/hurlfmt/tests_ok/help.out.pattern @@ -3,17 +3,16 @@ Format Hurl files Usage: hurlfmt [OPTIONS] [FILES]... Arguments: - [FILES]... Sets the input file to use + [FILES]... Set the input file to use Options: - --check Run in 'check' mode - --color Colorize Output - --format Specify output format: hurl, json or html (DEPRECATED) [default: hurl] - --in-place Modify file in place - --in Specify input format: hurl or curl [default: hurl] - --no-color Do not colorize output - -o, --output Write to FILE instead of stdout - --out Specify output format: hurl, json or html [default: hurl] - --standalone Standalone HTML - -h, --help Print help - -V, --version Print version + --check Run in 'check' mode + --color Colorize Output + --in-place Modify files in place + --in Specify input format: hurl or curl [default: hurl] + --no-color Do not colorize output + -o, --output Write to FILE instead of stdout + --out Specify output format: hurl, json or html [default: hurl] + --standalone Standalone HTML + -h, --help Print help + -V, --version Print version diff --git a/packages/hurlfmt/src/cli/options/commands.rs b/packages/hurlfmt/src/cli/options/commands.rs index bf29c40cf..425ea3623 100644 --- a/packages/hurlfmt/src/cli/options/commands.rs +++ b/packages/hurlfmt/src/cli/options/commands.rs @@ -15,75 +15,70 @@ * limitations under the License. * */ -use clap::ArgAction; +// Generated - Do not modify + +pub fn input_files() -> clap::Arg { + clap::Arg::new("input_files") + .value_name("FILES") + .help("Set the input file to use") + .required(false) + .index(1) + .num_args(1..) +} pub fn check() -> clap::Arg { clap::Arg::new("check") .long("check") .help("Run in 'check' mode") - .action(ArgAction::SetTrue) - .conflicts_with("format") - .conflicts_with("output") + .action(clap::ArgAction::SetTrue) } pub fn color() -> clap::Arg { clap::Arg::new("color") .long("color") .help("Colorize Output") - .action(ArgAction::SetTrue) .conflicts_with("no_color") .conflicts_with("in_place") + .action(clap::ArgAction::SetTrue) } pub fn format() -> clap::Arg { clap::Arg::new("format") .long("format") .value_name("FORMAT") - .help("Specify output format: hurl, json or html (DEPRECATED)") - .conflicts_with("check") - .default_value("hurl") + .help("Specify output format: hurl, json or html") .num_args(1) + .hide(true) } pub fn in_place() -> clap::Arg { clap::Arg::new("in_place") .long("in-place") - .help("Modify file in place") - .action(ArgAction::SetTrue) - .conflicts_with("output") - .conflicts_with("color") -} - -pub fn input_files() -> clap::Arg { - clap::Arg::new("input_files") - .value_name("FILES") - .help("Sets the input file to use") - .required(false) - .index(1) - .num_args(1..) + .help("Modify files in place") + .action(clap::ArgAction::SetTrue) } pub fn input_format() -> clap::Arg { clap::Arg::new("input_format") .long("in") .value_name("FORMAT") - .help("Specify input format: hurl or curl") - .conflicts_with("check") .default_value("hurl") + .help("Specify input format: hurl or curl") .num_args(1) } + pub fn no_color() -> clap::Arg { clap::Arg::new("no_color") .long("no-color") .help("Do not colorize output") - .action(ArgAction::SetTrue) .conflicts_with("color") + .action(clap::ArgAction::SetTrue) } pub fn output() -> clap::Arg { clap::Arg::new("output") - .short('o') .long("output") + .short('o') .value_name("FILE") .help("Write to FILE instead of stdout") .num_args(1) @@ -93,9 +88,8 @@ pub fn output_format() -> clap::Arg { clap::Arg::new("output_format") .long("out") .value_name("FORMAT") - .help("Specify output format: hurl, json or html") - .conflicts_with("check") .default_value("hurl") + .help("Specify output format: hurl, json or html") .num_args(1) } @@ -103,5 +97,6 @@ pub fn standalone() -> clap::Arg { clap::Arg::new("standalone") .long("standalone") .help("Standalone HTML") - .action(ArgAction::SetTrue) + .conflicts_with("no_color") + .action(clap::ArgAction::SetTrue) }