From e87e1e214319a0c8891410e73a956faa1b591e7c Mon Sep 17 00:00:00 2001 From: Li Junchen <lijunchen95@outlook.com> Date: Mon, 4 Nov 2024 14:36:27 +0800 Subject: [PATCH 1/2] add `moon fmt --block-style` --- crates/moon/src/cli/fmt.rs | 5 +++++ crates/moon/src/cli/tool/format_and_diff.rs | 18 ++++++++++++++---- crates/moonbuild/src/fmt.rs | 8 ++++++++ crates/moonutil/src/common.rs | 1 + 4 files changed, 28 insertions(+), 4 deletions(-) diff --git a/crates/moon/src/cli/fmt.rs b/crates/moon/src/cli/fmt.rs index a9189a14..1e7c88bd 100644 --- a/crates/moon/src/cli/fmt.rs +++ b/crates/moon/src/cli/fmt.rs @@ -37,6 +37,10 @@ pub struct FmtSubcommand { #[clap(long)] pub sort_input: bool, + /// Add separator between each segments + #[clap(long)] + pub block_style: bool, + pub args: Vec<String>, } @@ -68,6 +72,7 @@ pub fn run_fmt(cli: &UniversalFlags, cmd: FmtSubcommand) -> anyhow::Result<i32> run_mode, fmt_opt: Some(FmtOpt { check: cmd.check, + block_style: cmd.block_style, extra_args: cmd.args, }), build_graph: cli.build_graph, diff --git a/crates/moon/src/cli/tool/format_and_diff.rs b/crates/moon/src/cli/tool/format_and_diff.rs index 3d82465f..53012789 100644 --- a/crates/moon/src/cli/tool/format_and_diff.rs +++ b/crates/moon/src/cli/tool/format_and_diff.rs @@ -29,15 +29,25 @@ pub struct FormatAndDiffSubcommand { #[clap(long)] new: PathBuf, + /// Add separator between each segments + #[clap(long)] + block_style: bool, + pub args: Vec<String>, } pub fn run_format_and_diff(cmd: FormatAndDiffSubcommand) -> anyhow::Result<i32> { + let mut args = vec![ + "-exit-code", + cmd.old.to_str().unwrap(), + "-o", + cmd.new.to_str().unwrap(), + ]; + if cmd.block_style { + args.push("-block-style") + } let mut execution = std::process::Command::new("moonfmt") - .arg("-exit-code") - .arg(cmd.old.to_str().unwrap()) - .arg("-o") - .arg(cmd.new.to_str().unwrap()) + .args(args) .args(&cmd.args) .stdin(Stdio::inherit()) .stdout(Stdio::inherit()) diff --git a/crates/moonbuild/src/fmt.rs b/crates/moonbuild/src/fmt.rs index 20956fd4..64d091da 100644 --- a/crates/moonbuild/src/fmt.rs +++ b/crates/moonbuild/src/fmt.rs @@ -128,6 +128,10 @@ fn gen_inplace_fmt_command( .arg("-o") .arg(&item.phony_out) .args(&moonbuild_opt.fmt_opt.as_ref().unwrap().extra_args) + .arg_with_cond( + moonbuild_opt.fmt_opt.as_ref().unwrap().block_style, + "-block-style", + ) .build(); build.cmdline = Some(command); build.desc = Some(format!("moonfmt {}", item.input)); @@ -233,6 +237,10 @@ fn gen_fmt_to_command( .arg(&item.input) .arg("--new") .arg(&item.output) + .arg_with_cond( + moonbuild_opt.fmt_opt.as_ref().unwrap().block_style, + "--block-style", + ) .args(&moonbuild_opt.fmt_opt.as_ref().unwrap().extra_args) .build(); build.cmdline = Some(command); diff --git a/crates/moonutil/src/common.rs b/crates/moonutil/src/common.rs index 266a28ed..7539b5c0 100644 --- a/crates/moonutil/src/common.rs +++ b/crates/moonutil/src/common.rs @@ -379,6 +379,7 @@ pub struct TestArtifacts { #[derive(Debug, Clone, Default)] pub struct FmtOpt { pub check: bool, + pub block_style: bool, pub extra_args: Vec<String>, } From 61c878d93707d3300097edf2612fcec5166dc2fa Mon Sep 17 00:00:00 2001 From: Li Junchen <lijunchen95@outlook.com> Date: Mon, 4 Nov 2024 14:36:49 +0800 Subject: [PATCH 2/2] add and update tests --- crates/moon/tests/test_cases/mod.rs | 31 +++++++++++++++++++++++++++++ docs/manual-zh/src/commands.md | 1 + docs/manual/src/commands.md | 1 + 3 files changed, 33 insertions(+) diff --git a/crates/moon/tests/test_cases/mod.rs b/crates/moon/tests/test_cases/mod.rs index 0133b71a..bd5552ab 100644 --- a/crates/moon/tests/test_cases/mod.rs +++ b/crates/moon/tests/test_cases/mod.rs @@ -4001,6 +4001,37 @@ fn test_moon_fmt_extra_args() { ); } +#[test] +fn test_moon_fmt_block_style() { + let dir = TestDir::new("moon_fmt.in"); + check( + get_stdout(&dir, ["fmt", "--block-style", "--sort-input", "--dry-run"]), + expect![[r#" + moonfmt ./lib/hello.mbt -w -o ./target/wasm-gc/release/format/lib/hello.mbt -block-style + moonfmt ./lib/hello_wbtest.mbt -w -o ./target/wasm-gc/release/format/lib/hello_wbtest.mbt -block-style + moonfmt ./main/main.mbt -w -o ./target/wasm-gc/release/format/main/main.mbt -block-style + "#]], + ); + + check( + get_stdout( + &dir, + [ + "fmt", + "--block-style", + "--check", + "--sort-input", + "--dry-run", + ], + ), + expect![[r#" + moon tool format-and-diff --old ./lib/hello.mbt --new ./target/wasm-gc/release/format/lib/hello.mbt --block-style + moon tool format-and-diff --old ./lib/hello_wbtest.mbt --new ./target/wasm-gc/release/format/lib/hello_wbtest.mbt --block-style + moon tool format-and-diff --old ./main/main.mbt --new ./target/wasm-gc/release/format/main/main.mbt --block-style + "#]], + ); +} + #[test] fn test_export_memory_name() { let dir = TestDir::new("export_memory.in"); diff --git a/docs/manual-zh/src/commands.md b/docs/manual-zh/src/commands.md index d5bb7be4..a40e4e0c 100644 --- a/docs/manual-zh/src/commands.md +++ b/docs/manual-zh/src/commands.md @@ -237,6 +237,7 @@ Format source code * `--check` — Check only and don't change the source code * `--sort-input` — Sort input files +* `--block-style` — Add separator between each segments diff --git a/docs/manual/src/commands.md b/docs/manual/src/commands.md index d5bb7be4..a40e4e0c 100644 --- a/docs/manual/src/commands.md +++ b/docs/manual/src/commands.md @@ -237,6 +237,7 @@ Format source code * `--check` — Check only and don't change the source code * `--sort-input` — Sort input files +* `--block-style` — Add separator between each segments