.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:
.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}"; \
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
}
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:
import (
"bytes"
"errors"
+ "fmt"
"io"
"os"
"sort"
}
// 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
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
}
"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"
)