Fix make fmt
and make fmt-check
(#18633)
* 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>
This commit is contained in:
parent
7b6c1f809f
commit
37ead26e36
4 changed files with 28 additions and 15 deletions
11
Makefile
11
Makefile
|
@ -231,13 +231,11 @@ clean:
|
||||||
|
|
||||||
.PHONY: fmt
|
.PHONY: fmt
|
||||||
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 \
|
@hash gofumpt > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
|
||||||
$(GO) install mvdan.cc/gofumpt@latest; \
|
$(GO) install mvdan.cc/gofumpt@latest; \
|
||||||
fi
|
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
|
.PHONY: vet
|
||||||
vet:
|
vet:
|
||||||
|
@ -285,8 +283,11 @@ errcheck:
|
||||||
|
|
||||||
.PHONY: fmt-check
|
.PHONY: fmt-check
|
||||||
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
|
# 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 \
|
if [ -n "$$diff" ]; then \
|
||||||
echo "Please run 'make fmt' and commit the result:"; \
|
echo "Please run 'make fmt' and commit the result:"; \
|
||||||
echo "$${diff}"; \
|
echo "$${diff}"; \
|
||||||
|
|
|
@ -229,9 +229,9 @@ func containsString(a []string, s string) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func giteaFormatGoImports(files []string) error {
|
func giteaFormatGoImports(files []string, hasChangedFiles, doWriteFile bool) error {
|
||||||
for _, file := range files {
|
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)
|
log.Printf("failed to format go imports: %s, err=%v", file, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -267,10 +267,11 @@ func main() {
|
||||||
logVerbose("batch cmd: %s %v", subCmd, substArgs)
|
logVerbose("batch cmd: %s %v", subCmd, substArgs)
|
||||||
switch subCmd {
|
switch subCmd {
|
||||||
case "gitea-fmt":
|
case "gitea-fmt":
|
||||||
if containsString(subArgs, "-w") {
|
if containsString(subArgs, "-d") {
|
||||||
cmdErrors = append(cmdErrors, giteaFormatGoImports(files))
|
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":
|
case "misspell":
|
||||||
cmdErrors = append(cmdErrors, passThroughCmd("misspell", substArgs))
|
cmdErrors = append(cmdErrors, passThroughCmd("misspell", substArgs))
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -7,6 +7,7 @@ package codeformat
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
"sort"
|
"sort"
|
||||||
|
@ -158,7 +159,7 @@ func formatGoImports(contentBytes []byte) ([]byte, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// FormatGoImports format the imports by our rules (see unit tests)
|
// 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)
|
f, err := os.Open(file)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -181,11 +182,20 @@ func FormatGoImports(file string) error {
|
||||||
if bytes.Equal(contentBytes, formattedBytes) {
|
if bytes.Equal(contentBytes, formattedBytes) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if doChangedFiles {
|
||||||
|
fmt.Println(file)
|
||||||
|
}
|
||||||
|
|
||||||
|
if doWriteFile {
|
||||||
f, err = os.OpenFile(file, os.O_TRUNC|os.O_WRONLY, 0o644)
|
f, err = os.OpenFile(file, os.O_TRUNC|os.O_WRONLY, 0o644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
_, err = f.Write(formattedBytes)
|
_, err = f.Write(formattedBytes)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ import (
|
||||||
"code.gitea.io/gitea/models/unittest"
|
"code.gitea.io/gitea/models/unittest"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Reference in a new issue