]> source.dussan.org Git - gitea.git/commitdiff
Fix `make fmt` and `make fmt-check` (#18633)
authorsilverwind <me@silverwind.io>
Sun, 6 Feb 2022 15:44:30 +0000 (07:44 -0800)
committerGitHub <noreply@github.com>
Sun, 6 Feb 2022 15:44:30 +0000 (16:44 +0100)
* Run 'make fmt'

'make fmt' currently produces this change, I'm not sure how CI did not
fail on it, I made sure I have `mvdan.cc/gofumpt@latest`.

* Fix 'make fmt-check'

`make fmt-check` did not run all commands that `make fmt` did, resulting
in missed diffs. Fix that by just depending on the `fmt` target.

Includes: https://github.com/go-gitea/gitea/pull/18633

* Make gitea-fmt work with -l and -d and integrate gofumpt

This implements -l, -w and -d with gitea-fmt and merges gofumpt.

Signed-off-by: Andrew Thornton <art27@cantab.net>
* as per silverwind

Signed-off-by: Andrew Thornton <art27@cantab.net>
* Apply suggestions from code review

* use -l instead of -d for fmt-check

Signed-off-by: Andrew Thornton <art27@cantab.net>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Co-authored-by: Andrew Thornton <art27@cantab.net>
Makefile
build/code-batch-process.go
build/codeformat/formatimports.go
services/mailer/mail_test.go

index 88e08c1e70641b020717d66169793128bf9ff1c7..e3c948e33eb3d266e6256dd9d5d38c4971d1f0e5 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -231,13 +231,11 @@ clean:
 
 .PHONY: fmt
 fmt:
-       @echo "Running gitea-fmt(with gofmt)..."
-       @$(GO) run build/code-batch-process.go gitea-fmt -s -w '{file-list}'
-       @echo "Running gofumpt"
        @hash gofumpt > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
                $(GO) install mvdan.cc/gofumpt@latest; \
        fi
-       @gofumpt -w -l -extra -lang 1.16 .
+       @echo "Running gitea-fmt (with gofumpt)..."
+       @$(GO) run build/code-batch-process.go gitea-fmt -w '{file-list}'
 
 .PHONY: vet
 vet:
@@ -285,8 +283,11 @@ errcheck:
 
 .PHONY: fmt-check
 fmt-check:
+       @hash gofumpt > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
+               $(GO) install mvdan.cc/gofumpt@latest; \
+       fi
        # get all go files and run gitea-fmt (with gofmt) on them
-       @diff=$$($(GO) run build/code-batch-process.go gitea-fmt -s -d '{file-list}'); \
+       @diff=$$($(GO) run build/code-batch-process.go gitea-fmt -l '{file-list}'); \
        if [ -n "$$diff" ]; then \
                echo "Please run 'make fmt' and commit the result:"; \
                echo "$${diff}"; \
index 02f54b9c0af2e7ccc96d1e7bf18908ecc3019ce1..8139fe76237548c6082ded53b3474ce3c8f27a53 100644 (file)
@@ -229,9 +229,9 @@ func containsString(a []string, s string) bool {
        return false
 }
 
-func giteaFormatGoImports(files []string) error {
+func giteaFormatGoImports(files []string, hasChangedFiles, doWriteFile bool) error {
        for _, file := range files {
-               if err := codeformat.FormatGoImports(file); err != nil {
+               if err := codeformat.FormatGoImports(file, hasChangedFiles, doWriteFile); err != nil {
                        log.Printf("failed to format go imports: %s, err=%v", file, err)
                        return err
                }
@@ -267,10 +267,11 @@ func main() {
                logVerbose("batch cmd: %s %v", subCmd, substArgs)
                switch subCmd {
                case "gitea-fmt":
-                       if containsString(subArgs, "-w") {
-                               cmdErrors = append(cmdErrors, giteaFormatGoImports(files))
+                       if containsString(subArgs, "-d") {
+                               log.Print("the -d option is not supported by gitea-fmt")
                        }
-                       cmdErrors = append(cmdErrors, passThroughCmd("gofmt", substArgs))
+                       cmdErrors = append(cmdErrors, giteaFormatGoImports(files, containsString(subArgs, "-l"), containsString(subArgs, "-w")))
+                       cmdErrors = append(cmdErrors, passThroughCmd("gofumpt", append([]string{"-extra", "-lang", "1.16"}, substArgs...)))
                case "misspell":
                        cmdErrors = append(cmdErrors, passThroughCmd("misspell", substArgs))
                default:
index fedc5cc0909cdf164a2e29a3697d51b5865cbc89..5d051b2726153db166b42bdea5da966b6f708c09 100644 (file)
@@ -7,6 +7,7 @@ package codeformat
 import (
        "bytes"
        "errors"
+       "fmt"
        "io"
        "os"
        "sort"
@@ -158,7 +159,7 @@ func formatGoImports(contentBytes []byte) ([]byte, error) {
 }
 
 // FormatGoImports format the imports by our rules (see unit tests)
-func FormatGoImports(file string) error {
+func FormatGoImports(file string, doChangedFiles, doWriteFile bool) error {
        f, err := os.Open(file)
        if err != nil {
                return err
@@ -181,11 +182,20 @@ func FormatGoImports(file string) error {
        if bytes.Equal(contentBytes, formattedBytes) {
                return nil
        }
-       f, err = os.OpenFile(file, os.O_TRUNC|os.O_WRONLY, 0o644)
-       if err != nil {
+
+       if doChangedFiles {
+               fmt.Println(file)
+       }
+
+       if doWriteFile {
+               f, err = os.OpenFile(file, os.O_TRUNC|os.O_WRONLY, 0o644)
+               if err != nil {
+                       return err
+               }
+               defer f.Close()
+               _, err = f.Write(formattedBytes)
                return err
        }
-       defer f.Close()
-       _, err = f.Write(formattedBytes)
+
        return err
 }
index 6c800e457b0c224523fd23ce7b9aa85506682d1b..ba82fc6ff84540ee7c5dd504e83746f78cf59703 100644 (file)
@@ -17,6 +17,7 @@ import (
        "code.gitea.io/gitea/models/unittest"
        user_model "code.gitea.io/gitea/models/user"
        "code.gitea.io/gitea/modules/setting"
+
        "github.com/stretchr/testify/assert"
 )