mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09: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