diff --git a/Makefile b/Makefile index 88e08c1e7064..e3c948e33eb3 100644 --- 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}"; \ diff --git a/build/code-batch-process.go b/build/code-batch-process.go index 02f54b9c0af2..8139fe762375 100644 --- a/build/code-batch-process.go +++ b/build/code-batch-process.go @@ -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: diff --git a/build/codeformat/formatimports.go b/build/codeformat/formatimports.go index fedc5cc0909c..5d051b272615 100644 --- a/build/codeformat/formatimports.go +++ b/build/codeformat/formatimports.go @@ -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 } diff --git a/services/mailer/mail_test.go b/services/mailer/mail_test.go index 6c800e457b0c..ba82fc6ff845 100644 --- a/services/mailer/mail_test.go +++ b/services/mailer/mail_test.go @@ -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" )