mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08: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
 | 
					.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 New Issue
	
	Block a user