mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	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:
		
							
								
								
									
										11
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								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}"; \
 | 
			
		||||
 
 | 
			
		||||
@@ -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:
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user