From b560e3b2638a9b886e5eaa0f401bd58a79f4efc2 Mon Sep 17 00:00:00 2001 From: Maxime Brunet Date: Tue, 1 Aug 2023 18:31:38 -0700 Subject: [PATCH] fix(cli): do not exit after 1st formatted file --- ci/release/changelogs/next.md | 2 ++ d2cli/fmt.go | 4 +++- e2etests-cli/main_test.go | 13 +++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ci/release/changelogs/next.md b/ci/release/changelogs/next.md index 823b1b79a..62628fb1c 100644 --- a/ci/release/changelogs/next.md +++ b/ci/release/changelogs/next.md @@ -5,3 +5,5 @@ #### Improvements 🧹 #### Bugfixes ⛑️ + +- Fixes `d2 fmt` to format all files passed as arguments rather than first non-formatted only [#1523](https://github.com/terrastruct/d2/issues/1523) diff --git a/d2cli/fmt.go b/d2cli/fmt.go index d7aa62ca2..39f29bfd6 100644 --- a/d2cli/fmt.go +++ b/d2cli/fmt.go @@ -43,7 +43,9 @@ func fmtCmd(ctx context.Context, ms *xmain.State) (err error) { output := []byte(d2format.Format(m)) if !bytes.Equal(output, input) { - return ms.WritePath(inputPath, output) + if err := ms.WritePath(inputPath, output); err != nil { + return err + } } } return nil diff --git a/e2etests-cli/main_test.go b/e2etests-cli/main_test.go index bd0385bd5..29c92ec5c 100644 --- a/e2etests-cli/main_test.go +++ b/e2etests-cli/main_test.go @@ -531,6 +531,19 @@ i used to read assert.Equal(t, "x -> y\n", string(got)) }, }, + { + name: "fmt-multiple-files", + run: func(t *testing.T, ctx context.Context, dir string, env *xos.Env) { + writeFile(t, dir, "foo.d2", `a ---> b`) + writeFile(t, dir, "bar.d2", `x ---> y`) + err := runTestMainPersist(t, ctx, dir, env, "fmt", "foo.d2", "bar.d2") + assert.Success(t, err) + gotFoo := readFile(t, dir, "foo.d2") + gotBar := readFile(t, dir, "bar.d2") + assert.Equal(t, "a -> b\n", string(gotFoo)) + assert.Equal(t, "x -> y\n", string(gotBar)) + }, + }, } ctx := context.Background()