]> source.dussan.org Git - gitea.git/commitdiff
A better go code formatter, and now `make fmt` can run in Windows (#17684)
authorwxiaoguang <wxiaoguang@gmail.com>
Wed, 17 Nov 2021 12:34:35 +0000 (20:34 +0800)
committerGitHub <noreply@github.com>
Wed, 17 Nov 2021 12:34:35 +0000 (20:34 +0800)
* go build / format tools
* re-format imports

106 files changed:
Makefile
build/code-batch-process.go [new file with mode: 0644]
build/codeformat/formatimports.go [new file with mode: 0644]
build/codeformat/formatimports_test.go [new file with mode: 0644]
build/gitea-format-imports.go [new file with mode: 0644]
cmd/doctor.go
cmd/mailer.go
cmd/web.go
integrations/api_issue_label_test.go
integrations/api_private_serv_test.go
integrations/api_pull_commits_test.go
integrations/api_repo_git_notes_test.go
integrations/api_team_user_test.go
integrations/api_user_org_perm_test.go
integrations/download_test.go
integrations/eventsource_test.go
integrations/git_clone_wiki_test.go
integrations/goget_test.go
integrations/gpg_git_test.go
integrations/org_count_test.go
integrations/org_test.go
integrations/rename_branch_test.go
integrations/repo_migrate_test.go
integrations/repofiles_delete_test.go
integrations/signup_test.go
integrations/user_avatar_test.go
models/access_test.go
models/admin_test.go
models/attachment_test.go
models/branches_test.go
models/commit_status_test.go
models/consistency_test.go
models/db/engine.go
models/issue_assignees_test.go
models/issue_comment_test.go
models/issue_dependency_test.go
models/issue_label_test.go
models/issue_list.go
models/issue_test.go
models/issue_tracked_time_test.go
models/issue_user_test.go
models/issue_watch_test.go
models/migrations/v142.go
models/migrations/v144.go
models/migrations/v175.go
models/migrations/v177_test.go
models/migrations/v191.go
models/notification_test.go
models/org_team_test.go
models/pull_test.go
models/repo.go
models/repo_collaboration_test.go
models/repo_indexer.go
models/repo_permission_test.go
models/repo_redirect_test.go
models/repo_transfer_test.go
models/review_test.go
models/ssh_key.go
models/ssh_key_deploy.go
models/ssh_key_fingerprint.go
models/ssh_key_parse.go
models/star_test.go
models/token_test.go
models/topic_test.go
models/unittest/fixtures.go
models/user.go
models/user_email.go
modules/convert/utils_test.go
modules/doctor/fix16961.go
modules/doctor/fix16961_test.go
modules/git/commit_info_test.go
modules/git/pipeline/lfs.go
modules/git/repo_compare_test.go
modules/git/repo_tag_test.go
modules/highlight/highlight.go
modules/highlight/highlight_test.go
modules/indexer/issues/bleve_test.go
modules/indexer/issues/indexer_test.go
modules/indexer/stats/indexer_test.go
modules/log/file_test.go
modules/markup/mdstripper/mdstripper.go
modules/markup/renderer_test.go
modules/notification/action/action_test.go
modules/queue/queue_disk_channel_test.go
modules/queue/queue_disk_test.go
modules/repofiles/blob_test.go
modules/repofiles/content_test.go
modules/repofiles/tree_test.go
modules/repository/commits_test.go
modules/setting/queue.go
routers/api/v1/api.go
routers/utils/utils_test.go
routers/web/goget.go
routers/web/repo/issue_test.go
routers/web/web.go
services/auth/signin.go
services/auth/source/oauth2/store.go
services/auth/source/oauth2/token.go
services/cron/setting.go
services/forms/user_form_auth_openid.go
services/gitdiff/csv_test.go
services/issue/assignee_test.go
services/issue/label_test.go
services/repository/fork_test.go
services/webhook/deliver_test.go
services/webhook/webhook_test.go

index ecd91680ee22255720e2a8b0b07fa3cc3360deb6..eea9f7ad530135164d88e131a670b7d5fa20ec90 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -58,8 +58,6 @@ else
        SED_INPLACE := sed -i ''
 endif
 
-GOFMT ?= gofmt -s
-
 EXTRA_GOFLAGS ?=
 
 MAKE_VERSION := $(shell $(MAKE) -v | head -n 1)
@@ -127,8 +125,6 @@ ifeq ($(filter $(TAGS_SPLIT),bindata),bindata)
        GO_SOURCES += $(BINDATA_DEST)
 endif
 
-GO_SOURCES_OWN := $(filter-out vendor/% %/bindata.go, $(GO_SOURCES))
-
 #To update swagger use: GO111MODULE=on go get -u github.com/go-swagger/go-swagger/cmd/swagger
 SWAGGER := $(GO) run -mod=vendor github.com/go-swagger/go-swagger/cmd/swagger
 SWAGGER_SPEC := templates/swagger/v1_json.tmpl
@@ -238,7 +234,7 @@ clean:
 .PHONY: fmt
 fmt:
        @echo "Running go fmt..."
-       @$(GOFMT) -w $(GO_SOURCES_OWN)
+       @$(GO) run build/code-batch-process.go gitea-fmt -s -w '{file-list}'
 
 .PHONY: vet
 vet:
@@ -298,7 +294,7 @@ misspell-check:
                $(GO) install github.com/client9/misspell/cmd/misspell@v0.3.4; \
        fi
        @echo "Running misspell-check..."
-       @misspell -error -i unknwon $(GO_SOURCES_OWN)
+       @$(GO) run build/code-batch-process.go misspell -error -i unknwon '{file-list}'
 
 .PHONY: misspell
 misspell:
@@ -306,12 +302,12 @@ misspell:
                $(GO) install github.com/client9/misspell/cmd/misspell@v0.3.4; \
        fi
        @echo "Running go misspell..."
-       @misspell -w -i unknwon $(GO_SOURCES_OWN)
+       @$(GO) run build/code-batch-process.go misspell -w -i unknwon '{file-list}'
 
 .PHONY: fmt-check
 fmt-check:
        # get all go files and run go fmt on them
-       @diff=$$($(GOFMT) -d $(GO_SOURCES_OWN)); \
+       @diff=$$($(GO) run build/code-batch-process.go gitea-fmt -s -d '{file-list}'); \
        if [ -n "$$diff" ]; then \
                echo "Please run 'make fmt' and commit the result:"; \
                echo "$${diff}"; \
diff --git a/build/code-batch-process.go b/build/code-batch-process.go
new file mode 100644 (file)
index 0000000..4759baf
--- /dev/null
@@ -0,0 +1,284 @@
+// Copyright 2021 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+//go:build ignore
+// +build ignore
+
+package main
+
+import (
+       "fmt"
+       "log"
+       "os"
+       "os/exec"
+       "path/filepath"
+       "regexp"
+       "strconv"
+       "strings"
+
+       "code.gitea.io/gitea/build/codeformat"
+)
+
+// Windows has a limitation for command line arguments, the size can not exceed 32KB.
+// So we have to feed the files to some tools (like gofmt/misspell`) batch by batch
+
+// We also introduce a `gitea-fmt` command, it does better import formatting than gofmt/goimports
+
+var optionLogVerbose bool
+
+func logVerbose(msg string, args ...interface{}) {
+       if optionLogVerbose {
+               log.Printf(msg, args...)
+       }
+}
+
+func passThroughCmd(cmd string, args []string) error {
+       foundCmd, err := exec.LookPath(cmd)
+       if err != nil {
+               log.Fatalf("can not find cmd: %s", cmd)
+       }
+       c := exec.Cmd{
+               Path:   foundCmd,
+               Args:   args,
+               Stdin:  os.Stdin,
+               Stdout: os.Stdout,
+               Stderr: os.Stderr,
+       }
+       return c.Run()
+}
+
+type fileCollector struct {
+       dirs            []string
+       includePatterns []*regexp.Regexp
+       excludePatterns []*regexp.Regexp
+       batchSize       int
+}
+
+func newFileCollector(fileFilter string, batchSize int) (*fileCollector, error) {
+       co := &fileCollector{batchSize: batchSize}
+       if fileFilter == "go-own" {
+               co.dirs = []string{
+                       "build",
+                       "cmd",
+                       "contrib",
+                       "integrations",
+                       "models",
+                       "modules",
+                       "routers",
+                       "services",
+                       "tools",
+               }
+               co.includePatterns = append(co.includePatterns, regexp.MustCompile(`.*\.go$`))
+
+               co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`.*\bbindata\.go$`))
+               co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`integrations/gitea-repositories-meta`))
+               co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`integrations/migration-test`))
+               co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`modules/git/tests`))
+               co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`models/fixtures`))
+               co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`models/migrations/fixtures`))
+               co.excludePatterns = append(co.excludePatterns, regexp.MustCompile(`services/gitdiff/testdata`))
+       }
+
+       if co.dirs == nil {
+               return nil, fmt.Errorf("unknown file-filter: %s", fileFilter)
+       }
+       return co, nil
+}
+
+func (fc *fileCollector) matchPatterns(path string, regexps []*regexp.Regexp) bool {
+       path = strings.ReplaceAll(path, "\\", "/")
+       for _, re := range regexps {
+               if re.MatchString(path) {
+                       return true
+               }
+       }
+       return false
+}
+
+func (fc *fileCollector) collectFiles() (res [][]string, err error) {
+       var batch []string
+       for _, dir := range fc.dirs {
+               err = filepath.WalkDir(dir, func(path string, d os.DirEntry, err error) error {
+                       include := len(fc.includePatterns) == 0 || fc.matchPatterns(path, fc.includePatterns)
+                       exclude := fc.matchPatterns(path, fc.excludePatterns)
+                       process := include && !exclude
+                       if !process {
+                               if d.IsDir() {
+                                       if exclude {
+                                               logVerbose("exclude dir %s", path)
+                                               return filepath.SkipDir
+                                       }
+                                       // for a directory, if it is not excluded explicitly, we should walk into
+                                       return nil
+                               }
+                               // for a file, we skip it if it shouldn't be processed
+                               logVerbose("skip process %s", path)
+                               return nil
+                       }
+                       if d.IsDir() {
+                               // skip dir, we don't add dirs to the file list now
+                               return nil
+                       }
+                       if len(batch) >= fc.batchSize {
+                               res = append(res, batch)
+                               batch = nil
+                       }
+                       batch = append(batch, path)
+                       return nil
+               })
+               if err != nil {
+                       return nil, err
+               }
+       }
+       res = append(res, batch)
+       return res, nil
+}
+
+// substArgFiles expands the {file-list} to a real file list for commands
+func substArgFiles(args []string, files []string) []string {
+       for i, s := range args {
+               if s == "{file-list}" {
+                       newArgs := append(args[:i], files...)
+                       newArgs = append(newArgs, args[i+1:]...)
+                       return newArgs
+               }
+       }
+       return args
+}
+
+func exitWithCmdErrors(subCmd string, subArgs []string, cmdErrors []error) {
+       for _, err := range cmdErrors {
+               if err != nil {
+                       if exitError, ok := err.(*exec.ExitError); ok {
+                               exitCode := exitError.ExitCode()
+                               log.Printf("run command failed (code=%d): %s %v", exitCode, subCmd, subArgs)
+                               os.Exit(exitCode)
+                       } else {
+                               log.Fatalf("run command failed (err=%s) %s %v", err, subCmd, subArgs)
+                       }
+               }
+       }
+}
+
+func parseArgs() (mainOptions map[string]string, subCmd string, subArgs []string) {
+       mainOptions = map[string]string{}
+       for i := 1; i < len(os.Args); i++ {
+               arg := os.Args[i]
+               if arg == "" {
+                       break
+               }
+               if arg[0] == '-' {
+                       arg = strings.TrimPrefix(arg, "-")
+                       arg = strings.TrimPrefix(arg, "-")
+                       fields := strings.SplitN(arg, "=", 2)
+                       if len(fields) == 1 {
+                               mainOptions[fields[0]] = "1"
+                       } else {
+                               mainOptions[fields[0]] = fields[1]
+                       }
+               } else {
+                       subCmd = arg
+                       subArgs = os.Args[i+1:]
+                       break
+               }
+       }
+       return
+}
+
+func showUsage() {
+       fmt.Printf(`Usage: %[1]s [options] {command} [arguments]
+
+Options:
+  --verbose
+  --file-filter=go-own
+  --batch-size=100
+
+Commands:
+  %[1]s gofmt ...
+  %[1]s misspell ...
+
+Arguments:
+  {file-list}     the file list
+
+Example:
+  %[1]s gofmt -s -d {file-list}
+
+`, "file-batch-exec")
+}
+
+func newFileCollectorFromMainOptions(mainOptions map[string]string) (fc *fileCollector, err error) {
+       fileFilter := mainOptions["file-filter"]
+       if fileFilter == "" {
+               fileFilter = "go-own"
+       }
+       batchSize, _ := strconv.Atoi(mainOptions["batch-size"])
+       if batchSize == 0 {
+               batchSize = 100
+       }
+
+       return newFileCollector(fileFilter, batchSize)
+}
+
+func containsString(a []string, s string) bool {
+       for _, v := range a {
+               if v == s {
+                       return true
+               }
+       }
+       return false
+}
+
+func giteaFormatGoImports(files []string) error {
+       for _, file := range files {
+               if err := codeformat.FormatGoImports(file); err != nil {
+                       log.Printf("failed to format go imports: %s, err=%v", file, err)
+                       return err
+               }
+       }
+       return nil
+}
+
+func main() {
+       mainOptions, subCmd, subArgs := parseArgs()
+       if subCmd == "" {
+               showUsage()
+               os.Exit(1)
+       }
+       optionLogVerbose = mainOptions["verbose"] != ""
+
+       fc, err := newFileCollectorFromMainOptions(mainOptions)
+       if err != nil {
+               log.Fatalf("can not create file collector: %s", err.Error())
+       }
+
+       fileBatches, err := fc.collectFiles()
+       if err != nil {
+               log.Fatalf("can not collect files: %s", err.Error())
+       }
+
+       processed := 0
+       var cmdErrors []error
+       for _, files := range fileBatches {
+               if len(files) == 0 {
+                       break
+               }
+               substArgs := substArgFiles(subArgs, files)
+               logVerbose("batch cmd: %s %v", subCmd, substArgs)
+               switch subCmd {
+               case "gitea-fmt":
+                       cmdErrors = append(cmdErrors, passThroughCmd("gofmt", substArgs))
+                       if containsString(subArgs, "-w") {
+                               cmdErrors = append(cmdErrors, giteaFormatGoImports(files))
+                       }
+               case "misspell":
+                       cmdErrors = append(cmdErrors, passThroughCmd("misspell", substArgs))
+               default:
+                       log.Fatalf("unknown cmd: %s %v", subCmd, subArgs)
+               }
+               processed += len(files)
+       }
+
+       logVerbose("processed %d files", processed)
+       exitWithCmdErrors(subCmd, subArgs, cmdErrors)
+}
diff --git a/build/codeformat/formatimports.go b/build/codeformat/formatimports.go
new file mode 100644 (file)
index 0000000..c6427f6
--- /dev/null
@@ -0,0 +1,187 @@
+// Copyright 2021 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package codeformat
+
+import (
+       "bytes"
+       "errors"
+       "io"
+       "os"
+       "sort"
+       "strings"
+)
+
+var importPackageGroupOrders = map[string]int{
+       "":                     1, // internal
+       "code.gitea.io/gitea/": 2,
+}
+
+var errInvalidCommentBetweenImports = errors.New("comments between imported packages are invalid, please move comments to the end of the package line")
+
+var importBlockBegin = []byte("\nimport (\n")
+var importBlockEnd = []byte("\n)")
+
+type importLineParsed struct {
+       group   string
+       pkg     string
+       content string
+}
+
+func parseImportLine(line string) (*importLineParsed, error) {
+       il := &importLineParsed{content: line}
+       p1 := strings.IndexRune(line, '"')
+       if p1 == -1 {
+               return nil, errors.New("invalid import line: " + line)
+       }
+       p1++
+       p := strings.IndexRune(line[p1:], '"')
+       if p == -1 {
+               return nil, errors.New("invalid import line: " + line)
+       }
+       p2 := p1 + p
+       il.pkg = line[p1:p2]
+
+       pDot := strings.IndexRune(il.pkg, '.')
+       pSlash := strings.IndexRune(il.pkg, '/')
+       if pDot != -1 && pDot < pSlash {
+               il.group = "domain-package"
+       }
+       for groupName := range importPackageGroupOrders {
+               if groupName == "" {
+                       continue // skip internal
+               }
+               if strings.HasPrefix(il.pkg, groupName) {
+                       il.group = groupName
+               }
+       }
+       return il, nil
+}
+
+type importLineGroup []*importLineParsed
+type importLineGroupMap map[string]importLineGroup
+
+func formatGoImports(contentBytes []byte) ([]byte, error) {
+       p1 := bytes.Index(contentBytes, importBlockBegin)
+       if p1 == -1 {
+               return nil, nil
+       }
+       p1 += len(importBlockBegin)
+       p := bytes.Index(contentBytes[p1:], importBlockEnd)
+       if p == -1 {
+               return nil, nil
+       }
+       p2 := p1 + p
+
+       importGroups := importLineGroupMap{}
+       r := bytes.NewBuffer(contentBytes[p1:p2])
+       eof := false
+       for !eof {
+               line, err := r.ReadString('\n')
+               eof = err == io.EOF
+               if err != nil && !eof {
+                       return nil, err
+               }
+               line = strings.TrimSpace(line)
+               if line != "" {
+                       if strings.HasPrefix(line, "//") || strings.HasPrefix(line, "/*") {
+                               return nil, errInvalidCommentBetweenImports
+                       }
+                       importLine, err := parseImportLine(line)
+                       if err != nil {
+                               return nil, err
+                       }
+                       importGroups[importLine.group] = append(importGroups[importLine.group], importLine)
+               }
+       }
+
+       var groupNames []string
+       for groupName, importLines := range importGroups {
+               groupNames = append(groupNames, groupName)
+               sort.Slice(importLines, func(i, j int) bool {
+                       return strings.Compare(importLines[i].pkg, importLines[j].pkg) < 0
+               })
+       }
+
+       sort.Slice(groupNames, func(i, j int) bool {
+               n1 := groupNames[i]
+               n2 := groupNames[j]
+               o1 := importPackageGroupOrders[n1]
+               o2 := importPackageGroupOrders[n2]
+               if o1 != 0 && o2 != 0 {
+                       return o1 < o2
+               }
+               if o1 == 0 && o2 == 0 {
+                       return strings.Compare(n1, n2) < 0
+               }
+               return o1 != 0
+       })
+
+       formattedBlock := bytes.Buffer{}
+       for _, groupName := range groupNames {
+               hasNormalImports := false
+               hasDummyImports := false
+               // non-dummy import comes first
+               for _, importLine := range importGroups[groupName] {
+                       if strings.HasPrefix(importLine.content, "_") {
+                               hasDummyImports = true
+                       } else {
+                               formattedBlock.WriteString("\t" + importLine.content + "\n")
+                               hasNormalImports = true
+                       }
+               }
+               // dummy (_ "pkg") comes later
+               if hasDummyImports {
+                       if hasNormalImports {
+                               formattedBlock.WriteString("\n")
+                       }
+                       for _, importLine := range importGroups[groupName] {
+                               if strings.HasPrefix(importLine.content, "_") {
+                                       formattedBlock.WriteString("\t" + importLine.content + "\n")
+                               }
+                       }
+               }
+               formattedBlock.WriteString("\n")
+       }
+       formattedBlockBytes := bytes.TrimRight(formattedBlock.Bytes(), "\n")
+
+       var formattedBytes []byte
+       formattedBytes = append(formattedBytes, contentBytes[:p1]...)
+       formattedBytes = append(formattedBytes, formattedBlockBytes...)
+       formattedBytes = append(formattedBytes, contentBytes[p2:]...)
+       return formattedBytes, nil
+}
+
+//FormatGoImports format the imports by our rules (see unit tests)
+func FormatGoImports(file string) error {
+       f, err := os.Open(file)
+       if err != nil {
+               return err
+       }
+       var contentBytes []byte
+       {
+               defer f.Close()
+               contentBytes, err = io.ReadAll(f)
+               if err != nil {
+                       return err
+               }
+       }
+       formattedBytes, err := formatGoImports(contentBytes)
+       if err != nil {
+               return err
+       }
+       if formattedBytes == nil {
+               return nil
+       }
+       if bytes.Equal(contentBytes, formattedBytes) {
+               return nil
+       }
+       f, err = os.OpenFile(file, os.O_TRUNC|os.O_WRONLY, 0644)
+       if err != nil {
+               return err
+       }
+       defer f.Close()
+       _, err = f.Write(formattedBytes)
+       return err
+}
diff --git a/build/codeformat/formatimports_test.go b/build/codeformat/formatimports_test.go
new file mode 100644 (file)
index 0000000..d308353
--- /dev/null
@@ -0,0 +1,125 @@
+// Copyright 2021 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package codeformat
+
+import (
+       "testing"
+
+       "github.com/stretchr/testify/assert"
+)
+
+func TestFormatImportsSimple(t *testing.T) {
+       formatted, err := formatGoImports([]byte(`
+package codeformat
+
+import (
+       "github.com/stretchr/testify/assert"
+       "testing"
+)
+`))
+
+       expected := `
+package codeformat
+
+import (
+       "testing"
+
+       "github.com/stretchr/testify/assert"
+)
+`
+
+       assert.NoError(t, err)
+       assert.Equal(t, expected, string(formatted))
+}
+
+func TestFormatImportsGroup(t *testing.T) {
+       // gofmt/goimports won't group the packages, for example, they produce such code:
+       //     "bytes"
+       //     "image"
+       //        (a blank line)
+       //     "fmt"
+       //     "image/color/palette"
+       // our formatter does better, and these packages are grouped into one.
+
+       formatted, err := formatGoImports([]byte(`
+package test
+
+import (
+       "bytes"
+       "fmt"
+       "image"
+       "image/color/palette"
+
+       _ "image/gif"  // for processing gif images
+       _ "image/jpeg" // for processing jpeg images
+       _ "image/png"  // for processing png images
+
+       "code.gitea.io/other/package"
+
+       "code.gitea.io/gitea/modules/setting"
+       "code.gitea.io/gitea/modules/util"
+
+  "xorm.io/the/package"
+
+       "github.com/issue9/identicon"
+       "github.com/nfnt/resize"
+       "github.com/oliamb/cutter"
+)
+`))
+
+       expected := `
+package test
+
+import (
+       "bytes"
+       "fmt"
+       "image"
+       "image/color/palette"
+
+       _ "image/gif"  // for processing gif images
+       _ "image/jpeg" // for processing jpeg images
+       _ "image/png"  // for processing png images
+
+       "code.gitea.io/gitea/modules/setting"
+       "code.gitea.io/gitea/modules/util"
+
+       "code.gitea.io/other/package"
+       "github.com/issue9/identicon"
+       "github.com/nfnt/resize"
+       "github.com/oliamb/cutter"
+       "xorm.io/the/package"
+)
+`
+
+       assert.NoError(t, err)
+       assert.Equal(t, expected, string(formatted))
+}
+
+func TestFormatImportsInvalidComment(t *testing.T) {
+       // why we shouldn't write comments between imports: it breaks the grouping of imports
+       // for example:
+       //    "pkg1"
+       //    "pkg2"
+       //    // a comment
+       //    "pkgA"
+       //    "pkgB"
+       // the comment splits the packages into two groups, pkg1/2 are sorted separately, pkgA/B are sorted separately
+       // we don't want such code, so the code should be:
+       //    "pkg1"
+       //    "pkg2"
+       //    "pkgA" // a comment
+       //    "pkgB"
+
+       _, err := formatGoImports([]byte(`
+package test
+
+import (
+  "image/jpeg"
+       // for processing gif images
+       "image/gif"
+)
+`))
+       assert.ErrorIs(t, err, errInvalidCommentBetweenImports)
+}
diff --git a/build/gitea-format-imports.go b/build/gitea-format-imports.go
new file mode 100644 (file)
index 0000000..67c8397
--- /dev/null
@@ -0,0 +1,27 @@
+// Copyright 2021 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+//go:build ignore
+// +build ignore
+
+package main
+
+import (
+       "log"
+       "os"
+
+       "code.gitea.io/gitea/build/codeformat"
+)
+
+func main() {
+       if len(os.Args) <= 1 {
+               log.Fatalf("Usage: gitea-format-imports [files...]")
+       }
+
+       for _, file := range os.Args[1:] {
+               if err := codeformat.FormatGoImports(file); err != nil {
+                       log.Fatalf("can not format file %s, err=%v", file, err)
+               }
+       }
+}
index 498b859e41842dbf80658b1f5529b8dd578b034c..27f91e41bb2b3e2bccffdb997a76453e22087a1f 100644 (file)
@@ -18,9 +18,8 @@ import (
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
 
-       "xorm.io/xorm"
-
        "github.com/urfave/cli"
+       "xorm.io/xorm"
 )
 
 // CmdDoctor represents the available doctor sub-command.
index 1a4b0902e268fc7e1b0bef45f8216238e23eecef..a3d6baaa27a5aa0f457d59ee8290456eb2e4717b 100644 (file)
@@ -10,6 +10,7 @@ import (
 
        "code.gitea.io/gitea/modules/private"
        "code.gitea.io/gitea/modules/setting"
+
        "github.com/urfave/cli"
 )
 
index 80516058fb9def33d344b7aba0340ac7e5ebf1b6..4b6dfa71a23058484f81ac69ca26df9cdff82cb3 100644 (file)
@@ -9,10 +9,11 @@ import (
        "fmt"
        "net"
        "net/http"
-       _ "net/http/pprof" // Used for debugging if enabled and a web server is running
        "os"
        "strings"
 
+       _ "net/http/pprof" // Used for debugging if enabled and a web server is running
+
        "code.gitea.io/gitea/modules/graceful"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
index 7cb5df812b72e74066544285db603b5dba1fda05..58e09c818eb7b05011eca71650c7cc29a55e80ad 100644 (file)
@@ -10,9 +10,8 @@ import (
        "strings"
        "testing"
 
-       "code.gitea.io/gitea/models/unittest"
-
        "code.gitea.io/gitea/models"
+       "code.gitea.io/gitea/models/unittest"
        api "code.gitea.io/gitea/modules/structs"
 
        "github.com/stretchr/testify/assert"
index 8d814271cd6b5817304d011cd7a87c987e7e75ae..c3cb1cf328fe59738a8ee289317dd0ebb7a3ca97 100644 (file)
@@ -11,6 +11,7 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/private"
+
        "github.com/stretchr/testify/assert"
 )
 
index c537f002085c6201d036f51b58478884bfe63f33..a3d1bee58a0ba2e4ea7280b44983945014ba9fcd 100644 (file)
@@ -11,6 +11,7 @@ import (
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/models/unittest"
        api "code.gitea.io/gitea/modules/structs"
+
        "github.com/stretchr/testify/assert"
 )
 
index 21b8a931b07daf306956f139aa4bd098d23c2768..293bd769f43ec5ea2dd4c7bc8ecfe778d4f4374c 100644 (file)
@@ -12,6 +12,7 @@ import (
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/models/unittest"
        api "code.gitea.io/gitea/modules/structs"
+
        "github.com/stretchr/testify/assert"
 )
 
index 7e5bb0802e397da735caacea3bf523c21222ae9f..e7f4b0ee4c94b6e1fff38b4e94deffb3cc883087 100644 (file)
@@ -13,6 +13,7 @@ import (
        "code.gitea.io/gitea/models/unittest"
        "code.gitea.io/gitea/modules/convert"
        api "code.gitea.io/gitea/modules/structs"
+
        "github.com/stretchr/testify/assert"
 )
 
index abba24701ed17b250bed1e94ae80ea5d8ee7e79e..0dcdbd77adf24390e1ffc43eec867c5d0d216ded 100644 (file)
@@ -10,6 +10,7 @@ import (
        "testing"
 
        api "code.gitea.io/gitea/modules/structs"
+
        "github.com/stretchr/testify/assert"
 )
 
index 38de75f476a963c70c13a945a29b0f525fc7ddbb..f46122d95108086b07c7aabbbc66a8db103b956d 100644 (file)
@@ -9,6 +9,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/modules/setting"
+
        "github.com/stretchr/testify/assert"
 )
 
index ead01da8ca8fb93b9659d3573e10d954626b469b..eb08c004a886edbe146f43584ec7c0d5ff63272b 100644 (file)
@@ -14,6 +14,7 @@ import (
        "code.gitea.io/gitea/models/unittest"
        "code.gitea.io/gitea/modules/eventsource"
        api "code.gitea.io/gitea/modules/structs"
+
        "github.com/stretchr/testify/assert"
 )
 
index 2139ce5fe0dc285ecdbc91848bb0a79813d964d0..16cee254bcf7cc53fa292c8b9c58fff6bd71ef01 100644 (file)
@@ -14,6 +14,7 @@ import (
 
        "code.gitea.io/gitea/modules/git"
        "code.gitea.io/gitea/modules/util"
+
        "github.com/stretchr/testify/assert"
 )
 
index 1003d710238e94fed8bf5e55edae9ee09a62ca31..5dc9c5e0a8d17bee83eb3d5e7c10317701a8826c 100644 (file)
@@ -10,6 +10,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/modules/setting"
+
        "github.com/stretchr/testify/assert"
 )
 
index ecc253978407ff493c979d5b297bc25b529c83b8..b136e822810a0d2fbc42b42f4c725b2c8f49fd0b 100644 (file)
@@ -17,6 +17,7 @@ import (
        "code.gitea.io/gitea/modules/setting"
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/modules/util"
+
        "github.com/stretchr/testify/assert"
        "golang.org/x/crypto/openpgp"
        "golang.org/x/crypto/openpgp/armor"
index c473ecd68aac879b083bd8a1712da9ef28a86e7f..a394dba01c2e9f1e96e180589b3d20c5c329dde0 100644 (file)
@@ -12,6 +12,7 @@ import (
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/models/unittest"
        api "code.gitea.io/gitea/modules/structs"
+
        "github.com/stretchr/testify/assert"
 )
 
index ac234de6500aecbdbaf528936ae03389c20f4dd2..e94e4ea74c1c33a40ee2ada99338790a4ac73fa4 100644 (file)
@@ -11,6 +11,7 @@ import (
        "testing"
 
        api "code.gitea.io/gitea/modules/structs"
+
        "github.com/stretchr/testify/assert"
 )
 
index a8138ff0c58eff2a17e4c922826332755d973264..1fe198305459031ff4fad8735328723cc7039d3a 100644 (file)
@@ -10,6 +10,7 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 5a02b4ba03c0974d10bd08c25286f5508f548992..e6ba15b137bd00dcf11c89e3680548e59dd22596 100644 (file)
@@ -11,6 +11,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/modules/structs"
+
        "github.com/stretchr/testify/assert"
 )
 
index 8150673e2b32ede43f6f790530d61bf9a7a2ed8a..eb73348950260926fe5ff75e9abb2dda853e3768 100644 (file)
@@ -8,9 +8,8 @@ import (
        "net/url"
        "testing"
 
-       "code.gitea.io/gitea/models/unittest"
-
        "code.gitea.io/gitea/models"
+       "code.gitea.io/gitea/models/unittest"
        "code.gitea.io/gitea/modules/repofiles"
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/modules/test"
index 33e5809b289b8ec629412f919fe43a97caf5c76b..38aa069f318acadfe29ff02d7cce46d22cd4c9cc 100644 (file)
@@ -13,6 +13,7 @@ import (
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/models/unittest"
        "code.gitea.io/gitea/modules/setting"
+
        "github.com/stretchr/testify/assert"
        "github.com/unknwon/i18n"
 )
index e53f0e34fe34c9710a60c16d4f93aeb32998a637..edc3a47314ac955364b404b08da0af18364f32a4 100644 (file)
@@ -16,6 +16,7 @@ import (
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/models/unittest"
        "code.gitea.io/gitea/modules/avatar"
+
        "github.com/stretchr/testify/assert"
 )
 
index 96aa34edb648ef3bdc227e9bdd86869f5325561e..942ca4af4286421b4e9f82490ffad2b2e6b08617 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 95415731b2404e41741f885a8bef76d33f7464f7..8c1deda5f8cbe76a30184a05c426a831682bb788 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index c3949905363b0162cccbab0cdaaf67190ef0f382..4081811d1986da272a1612f0ed2494cd0d764f6f 100644 (file)
@@ -10,6 +10,7 @@ import (
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unit"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 787dd7fe8365ef88475999ddda5fab36820843b8..187f23d41bbc10c3cceccfd9cfc1aa264a685e1b 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 32d6a433ce054dbefe9d8e45e1581af5f3d742e8..02e3849357ebb8101c31fda2569fa7a91fc8afbf 100644 (file)
@@ -10,6 +10,7 @@ import (
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unittest"
        "code.gitea.io/gitea/modules/structs"
+
        "github.com/stretchr/testify/assert"
 )
 
index 6995f47c87e232d692c123200d259753265e27cf..d49a0132f09e07d69a3dd5e33dff2d8d710cd4b8 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index e392008020b2c73ada6c676b97a408632d6dcf11..b97e954cc3a9f648d87c06a0f775f67c71c9736b 100755 (executable)
@@ -16,17 +16,13 @@ import (
 
        "code.gitea.io/gitea/modules/setting"
 
-       // Needed for the MySQL driver
-       _ "github.com/go-sql-driver/mysql"
        "xorm.io/xorm"
        "xorm.io/xorm/names"
        "xorm.io/xorm/schemas"
 
-       // Needed for the Postgresql driver
-       _ "github.com/lib/pq"
-
-       // Needed for the MSSQL driver
-       _ "github.com/denisenkom/go-mssqldb"
+       _ "github.com/denisenkom/go-mssqldb" // Needed for the MSSQL driver
+       _ "github.com/go-sql-driver/mysql"   // Needed for the MySQL driver
+       _ "github.com/lib/pq"                // Needed for the Postgresql driver
 )
 
 var (
index 8e2256072a5951fd99c2f70dd0214f496aff4273..d1ce000de6b53e56e6f0e8ff864d0b2aa2dabac7 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 27c50a3ae4c6d4f2d6e8ac683fb53bbece346be0..4d3607b3e15b30e4b03d51b467f7a70b18b00dfb 100644 (file)
@@ -9,6 +9,7 @@ import (
        "time"
 
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index c357d35c501f9f97caaf759a3ec65ba87d4d2afe..86ac98b733a6b7b90dd719bb1b9c4bfaa616d4c2 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 658c459ba5277bf6356f96014412f247be30402d..d0f807a56e6a36812276472acd88d21315483520 100644 (file)
@@ -10,6 +10,7 @@ import (
 
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index ac7ec7ccbf240acee53d3d298252064efd8d01a5..04dcc5842211fb714d95011672e26c3719f9d455 100644 (file)
@@ -8,6 +8,7 @@ import (
        "fmt"
 
        "code.gitea.io/gitea/models/db"
+
        "xorm.io/builder"
 )
 
index f53febb1b30c3ebc64ff2fd5eb18fe3ce5e6fb1d..7942b7e78539ac92f01bac3315727a11d829895b 100644 (file)
@@ -13,6 +13,7 @@ import (
 
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 9bc966452178d7a3a9924a71dd1e11ef11a0ca4e..83420f5a152a6f9d43c5c372ba03d2f9ec46f62f 100644 (file)
@@ -9,6 +9,7 @@ import (
        "time"
 
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 1be276370375cd518be85e1af7212b963fff72b3..daa68d731e3361fd86c89d95d2cd25e187a0bfa1 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 18d49bfce55bc56ae9c429394d24da4af17dda39..f75677d68cf80bcb049f13325eab2d89ed597853 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 1abdd34961df08d8ee424863883b2c25dcc62147..d8ccc112d6eebd8e496a28eae2e59d2538c728d8 100644 (file)
@@ -6,6 +6,7 @@ package migrations
 
 import (
        "code.gitea.io/gitea/modules/log"
+
        "xorm.io/builder"
        "xorm.io/xorm"
 )
index 311bb93e3b0ecc9b71fbac96a4c3426296365073..81279a54c9102a3478188b0a21cc7184fc6ab24a 100644 (file)
@@ -6,6 +6,7 @@ package migrations
 
 import (
        "code.gitea.io/gitea/modules/log"
+
        "xorm.io/builder"
        "xorm.io/xorm"
 )
index 0044ed1845dccbce5d13833b52b05ca2330d9e4f..2dfefe987b688395851b69aab777a5b9609dd678 100644 (file)
@@ -10,6 +10,7 @@ import (
 
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
+
        "xorm.io/xorm"
 )
 
index 02cb1d265256088749be9efe7ca5917f22a022a3..f5fc793aa42304c4a64ac9c25804a8855c681a5c 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/modules/timeutil"
+
        "github.com/stretchr/testify/assert"
 )
 
index 10dfad4f04f57bc7fa1d12bc5dbb1ad4db8d0df7..c91990e0f33d7db94ae5d333e629adebf56c64c3 100644 (file)
@@ -6,6 +6,7 @@ package migrations
 
 import (
        "code.gitea.io/gitea/modules/setting"
+
        "xorm.io/xorm"
 )
 
index db2164a2f59b4ccfaa92c9e1a704a4d42f065119..19fad25f99fbb6ddc65dd23db33249ce00ad4d45 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 9277ac4f5edf50881132cbebae3846467c3e097a..b912dd83f2644bcf8917830f674be113fe25c67e 100644 (file)
@@ -9,6 +9,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 0225b421fb5321b87d16c650c8c1a1529f44479b..c967cca313916013c4b25b6100fb9654fd5f7677 100644 (file)
@@ -10,6 +10,7 @@ import (
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unit"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 16396e181db7a29019dc99fc75c5c3eee30e05c0..d45f1b2fc357e3d98748c100ce13bee8fa5324a5 100644 (file)
@@ -10,7 +10,6 @@ import (
        "errors"
        "fmt"
        "html/template"
-       _ "image/jpeg" // Needed for jpeg support
        "net"
        "net/url"
        "os"
@@ -22,6 +21,8 @@ import (
        "time"
        "unicode/utf8"
 
+       _ "image/jpeg" // Needed for jpeg support
+
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unit"
        "code.gitea.io/gitea/models/webhook"
index 9b698c0af64087a612f9632ee6da8600a9f30e33..060afc2139bd746ffcc80f7308e54d886b770c00 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 7029b0922b07ff6c5a5a044468a762676e57d8e0..e0511b325ead86f4d853f9a09c75d5225472d7fd 100644 (file)
@@ -8,6 +8,7 @@ import (
        "fmt"
 
        "code.gitea.io/gitea/models/db"
+
        "xorm.io/builder"
 )
 
index b64fe37911df98c0e3d9150e74e70ae4a0a1206c..180a85a2f5dce0effb022b637fbcd2a9397a3dda 100644 (file)
@@ -10,6 +10,7 @@ import (
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unit"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index a9d3cc14942a849db041302c06dbe420ce325447..6e5b9fc0803347b288a999d54b56fe78288af9c4 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index df4f83919ba1599ed4fe0f74da8d1f344fe6ac2b..368fea598deacffc8f58c9309339403c2f717796 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 2d07ea2ce4d5df060269ede51dccad5f46da4261..7b8b86df1320bfb2be1cd0d687a8ad4872c4d60a 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index c08fb72e7513335df0363948638c3e1f60537b74..baa0d2a54fcfe961f1509b673d86d026deba985c 100644 (file)
@@ -15,8 +15,8 @@ import (
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/timeutil"
        "code.gitea.io/gitea/modules/util"
-       "golang.org/x/crypto/ssh"
 
+       "golang.org/x/crypto/ssh"
        "xorm.io/builder"
 )
 
index 34cf03e9251869041aff0dfc3f1e2c8351e19fa7..4e3910d556100da45ab89314aec17d4ba2c210fc 100644 (file)
@@ -10,6 +10,7 @@ import (
 
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/modules/timeutil"
+
        "xorm.io/builder"
        "xorm.io/xorm"
 )
index 93c455e48938a65d14f49ce8ee6ee2e5f6a1c2c9..85296c961c3ebddd0602c2cf7705e41b6e73838c 100644 (file)
@@ -14,6 +14,7 @@ import (
        "code.gitea.io/gitea/modules/process"
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/modules/util"
+
        "golang.org/x/crypto/ssh"
 )
 
index d2c24b0a2a5022ab0869f30eeee4d0386227d3d4..748c66da7dad60d2298c5734a5f6be3c51fdbb65 100644 (file)
@@ -22,6 +22,7 @@ import (
        "code.gitea.io/gitea/modules/process"
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/modules/util"
+
        "golang.org/x/crypto/ssh"
 )
 
index e1313727332ec79cb5693df9940c49ba1110e4d2..f9a7ddb0f2af46ee73551ef54ce95b836d3727b5 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 191da7820ed406cf861c22493c4e1a1dd0662bca..007148870a1ad50ff014c42d9a0c1bd01f207234 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index def946b66688edb189c09b011b5635e4fee314e0..a38ed6494002e108294181f78384d542c0858ff7 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index af60df7b68e8798928d4acf60db46f0e99fa2af4..6277d1c72591d1c12d2ae9afd7508611260f1eec 100644 (file)
@@ -12,7 +12,6 @@ import (
        "code.gitea.io/gitea/models/db"
 
        "github.com/go-testfixtures/testfixtures/v3"
-
        "xorm.io/xorm"
        "xorm.io/xorm/schemas"
 )
index e3cf94efe0cd2afbf3d56b7683b81f9d46ca3681..a87929a35f7b8a0f6f0afe80cc18278ad76375a7 100644 (file)
@@ -12,7 +12,6 @@ import (
        "encoding/hex"
        "errors"
        "fmt"
-       _ "image/jpeg" // Needed for jpeg support
        "net/url"
        "os"
        "path/filepath"
@@ -21,6 +20,8 @@ import (
        "time"
        "unicode/utf8"
 
+       _ "image/jpeg" // Needed for jpeg support
+
        "code.gitea.io/gitea/models/db"
        "code.gitea.io/gitea/models/login"
        "code.gitea.io/gitea/models/unit"
@@ -39,7 +40,6 @@ import (
        "golang.org/x/crypto/bcrypt"
        "golang.org/x/crypto/pbkdf2"
        "golang.org/x/crypto/scrypt"
-
        "xorm.io/builder"
        "xorm.io/xorm"
 )
index 7de577bc2ce8b16d521cadbb539a84c1dc4f125d..bd0da65405e34e47dd96f86b7e139bda3b097709 100644 (file)
@@ -11,6 +11,7 @@ import (
        "code.gitea.io/gitea/models/db"
        user_model "code.gitea.io/gitea/models/user"
        "code.gitea.io/gitea/modules/util"
+
        "xorm.io/builder"
 )
 
index bd59299c01bd3b513d0d5d0b6b5afff6b79b12d7..e0ab15dfd838af4e4a56a8ce103ab6d2b599201b 100644 (file)
@@ -7,8 +7,9 @@ package convert
 import (
        "testing"
 
-       _ "github.com/mattn/go-sqlite3"
        "github.com/stretchr/testify/assert"
+
+       _ "github.com/mattn/go-sqlite3"
 )
 
 func TestToCorrectPageSize(t *testing.T) {
index e0e44b414ba4381fd38ad86fbf9cf62c453e501e..2e1db834cd6229078bc28f1f935d5154ab57034e 100644 (file)
@@ -13,6 +13,7 @@ import (
        "code.gitea.io/gitea/models/unit"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/timeutil"
+
        "xorm.io/builder"
 )
 
index 017f585335c5f35b349cf6ec942496687a73c85c..986425b4d8811ea27c1a96cd1a8118a4e42ecd62 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models"
+
        "github.com/stretchr/testify/assert"
 )
 
index 0608801f9df45070610a81a0155e790c6b0799e3..8467bdaa9034d3a983e85d57b6731044e38a1ad1 100644 (file)
@@ -12,6 +12,7 @@ import (
        "time"
 
        "code.gitea.io/gitea/modules/util"
+
        "github.com/stretchr/testify/assert"
 )
 
index 46a48b710c6f9ef006ea932096ce96a4c49e9506..4551ccd3f452ad633bf452f5048c170ec8e072fb 100644 (file)
@@ -17,6 +17,7 @@ import (
        "time"
 
        "code.gitea.io/gitea/modules/git"
+
        gogit "github.com/go-git/go-git/v5"
        "github.com/go-git/go-git/v5/plumbing/object"
 )
index 3a6cda955c5eb186dae8afd14101b7e2cf7889cf..ecd1aa4e6da04c7d5a19a78136fd86823b823830 100644 (file)
@@ -11,6 +11,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/modules/util"
+
        "github.com/stretchr/testify/assert"
 )
 
index cfab9edd8f42eb2f49a4b2e36ec40832d60df677..136287e1a9cdd454fc33eb20b323cbd94d576045 100644 (file)
@@ -9,6 +9,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/modules/util"
+
        "github.com/stretchr/testify/assert"
 )
 
index 6684fbe842910a8b693995e3e487c80e0f60b318..9a876d2a6b21fa82e2494cba3016bdba43a47d71 100644 (file)
@@ -17,6 +17,7 @@ import (
        "code.gitea.io/gitea/modules/analyze"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
+
        "github.com/alecthomas/chroma"
        "github.com/alecthomas/chroma/formatters/html"
        "github.com/alecthomas/chroma/lexers"
index 0a67e4c602697203318e73ead9d3be1bd90d24a2..29a15c0b53b4446dfab20302e0ae3a66ba6d9334 100644 (file)
@@ -9,6 +9,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/modules/setting"
+
        "gopkg.in/ini.v1"
 )
 
index 70a9582e1d77efead2ec9bb4c1cb0f60b81ae7c5..036b318d85c20b141f9b25c46d9a61869f235730 100644 (file)
@@ -9,6 +9,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/modules/util"
+
        "github.com/stretchr/testify/assert"
 )
 
index edfaddb648fe25fdc1825f35dd4543a9b92fca77..8353891c7c21a6815271f327839b471d249b13b6 100644 (file)
@@ -15,9 +15,8 @@ import (
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/modules/util"
 
-       "gopkg.in/ini.v1"
-
        "github.com/stretchr/testify/assert"
+       "gopkg.in/ini.v1"
 )
 
 func TestMain(m *testing.M) {
index c451e8023838b286cf421b9775235504290bad15..f52d73a32e7756b9bc82b8093efc2fbf23ab411d 100644 (file)
@@ -13,9 +13,8 @@ import (
        "code.gitea.io/gitea/models/unittest"
        "code.gitea.io/gitea/modules/setting"
 
-       "gopkg.in/ini.v1"
-
        "github.com/stretchr/testify/assert"
+       "gopkg.in/ini.v1"
 )
 
 func TestMain(m *testing.M) {
index 39d2467a1ff8a891efdc3935f8e02f805728145d..09a07b1e27537ee655cef55f3cb7bc8ddcbfa070 100644 (file)
@@ -15,6 +15,7 @@ import (
        "time"
 
        "code.gitea.io/gitea/modules/util"
+
        "github.com/stretchr/testify/assert"
 )
 
index 52464f3e1b376169ff8bac39afaf3d52a964810f..2977c81977893903c7bbb48c8341fe46be6ded24 100644 (file)
@@ -6,12 +6,11 @@ package mdstripper
 
 import (
        "bytes"
+       "io"
        "net/url"
        "strings"
        "sync"
 
-       "io"
-
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/markup/common"
        "code.gitea.io/gitea/modules/setting"
index 118fa2632ba5829368b105d748b54ea6636239e2..4cfa02246319021e8b90381e6cf3528d1fdcce38 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        . "code.gitea.io/gitea/modules/markup"
+
        _ "code.gitea.io/gitea/modules/markup/markdown"
 
        "github.com/stretchr/testify/assert"
index 3adcae83fdaade366483b7ce06a51ffd1e8ff656..448242bcdfd37fd4cbe6afad793c5d55d41c011d 100644 (file)
@@ -11,6 +11,7 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 99fb65934eb8b0c400819025ba819d284a465ecb..d464a183a0f551e79a389ed3298bc99348ecd0d5 100644 (file)
@@ -10,6 +10,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/modules/util"
+
        "github.com/stretchr/testify/assert"
 )
 
index 549a04104ebd79745fed0230824842584e8c5380..a2c21fec085bb449e234e78db56d70e1ffdef3a2 100644 (file)
@@ -11,6 +11,7 @@ import (
        "time"
 
        "code.gitea.io/gitea/modules/util"
+
        "github.com/stretchr/testify/assert"
 )
 
index c219892aec8e7a4701d4cb02145bec61fcb197d4..8950c349e644325ead28200c49b91a0d90847fcb 100644 (file)
@@ -8,7 +8,6 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models/unittest"
-
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/modules/test"
 
index e3230698bcec733b3c77784dbf9e8f527a321333..f6a953fab9874974971c9e3ba5f9162060195fe3 100644 (file)
@@ -9,7 +9,6 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models/unittest"
-
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/modules/test"
 
index 512313c43b3641e5faa8f8e4256c172737373114..6917b8915bcc337c88d1f26a3c3136e51daf7084 100644 (file)
@@ -8,7 +8,6 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models/unittest"
-
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/modules/test"
 
index 0d6c2e4c5ce6169ba64eaafee35071630a2e8102..b6a63dc12765f101b0cc058eea13d4b7abd3aeb2 100644 (file)
@@ -13,6 +13,7 @@ import (
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/models/unittest"
        "code.gitea.io/gitea/modules/git"
+
        "github.com/stretchr/testify/assert"
 )
 
index 1668cc63a34dba7d3e76a1b9179dfb59166872bd..56a036aeef58b149c52f6ac35c36cab57cd405d1 100644 (file)
@@ -10,6 +10,7 @@ import (
        "time"
 
        "code.gitea.io/gitea/modules/log"
+
        ini "gopkg.in/ini.v1"
 )
 
index f312df23db1a6f59fa260f847797958913700a62..ab8b07d6092177c94601c687fc9caf7d165a0648 100644 (file)
@@ -83,11 +83,12 @@ import (
        "code.gitea.io/gitea/routers/api/v1/org"
        "code.gitea.io/gitea/routers/api/v1/repo"
        "code.gitea.io/gitea/routers/api/v1/settings"
-       _ "code.gitea.io/gitea/routers/api/v1/swagger" // for swagger generation
        "code.gitea.io/gitea/routers/api/v1/user"
        "code.gitea.io/gitea/services/auth"
        "code.gitea.io/gitea/services/forms"
 
+       _ "code.gitea.io/gitea/routers/api/v1/swagger" // for swagger generation
+
        "gitea.com/go-chi/binding"
        "github.com/go-chi/cors"
 )
index bca52633111458cc93f821c9b3175bb098b9fa12..f49ed77b6fc08aa66041cb32d9c6807b14d76b62 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/modules/setting"
+
        "github.com/stretchr/testify/assert"
 )
 
index 9f367a92771a355e79682818f98863ce057459c6..8a8e1797dcf63aed4a788a0051aa0ad578cc7388 100644 (file)
@@ -14,6 +14,7 @@ import (
        "code.gitea.io/gitea/modules/context"
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/modules/util"
+
        "github.com/unknwon/com"
 )
 
index 6638baf34a16df5ca2f88b75d8cf1114c4012f87..b8862cf43dce2454d5b4e62e6ad24acd2237bf7a 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models"
+
        "github.com/stretchr/testify/assert"
 )
 
index 132e649d45d24082cecdeeee13217336e042c38d..f84d357bb126e18bbd21689a532df57d7c79a55d 100644 (file)
@@ -36,8 +36,7 @@ import (
        "code.gitea.io/gitea/services/lfs"
        "code.gitea.io/gitea/services/mailer"
 
-       // to registers all internal adapters
-       _ "code.gitea.io/gitea/modules/session"
+       _ "code.gitea.io/gitea/modules/session" // to registers all internal adapters
 
        "gitea.com/go-chi/captcha"
        "github.com/NYTimes/gziphandler"
index 5477e8643ebc11204b5613793b02f210f81141e3..504214f9f1626a48bcaa34addd27123bf17e768a 100644 (file)
@@ -13,8 +13,7 @@ import (
        user_model "code.gitea.io/gitea/models/user"
        "code.gitea.io/gitea/modules/log"
 
-       // Register the sources
-       _ "code.gitea.io/gitea/services/auth/source/db"
+       _ "code.gitea.io/gitea/services/auth/source/db" // register the sources (and below)
        _ "code.gitea.io/gitea/services/auth/source/ldap"
        _ "code.gitea.io/gitea/services/auth/source/oauth2"
        _ "code.gitea.io/gitea/services/auth/source/pam"
index fc29056c24a46d3f629837cb67b051cbecfa9581..4026abb6ecdef6d17d87e732f23dead8d0069058 100644 (file)
@@ -10,6 +10,7 @@ import (
        "net/http"
 
        "code.gitea.io/gitea/modules/log"
+
        chiSession "gitea.com/go-chi/session"
        "github.com/gorilla/sessions"
 )
index 0c7c5d8caad7b73fb1b9b298496d772a1ea951d5..c9a45340a18d8cfe49938b609e6e4eaf5ab973f9 100644 (file)
@@ -9,6 +9,7 @@ import (
        "time"
 
        "code.gitea.io/gitea/modules/timeutil"
+
        "github.com/golang-jwt/jwt"
 )
 
index d55e5b60ad69e6b749ba854d19a61d3d914c0d66..a0393e23dc83773a0d0939a903a2a3b62c00a295 100644 (file)
@@ -8,6 +8,7 @@ import (
        "time"
 
        "code.gitea.io/gitea/models"
+
        "github.com/unknwon/i18n"
 )
 
index b34f9dcc9724694f037927f0af29ce2f1e49e507..fd3368d303a904df50e663372cf30806da3325b4 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/modules/context"
        "code.gitea.io/gitea/modules/web/middleware"
+
        "gitea.com/go-chi/binding"
 )
 
index 4101477d89c3dcbce654cf647b05d0a32655a798..b4f725e5589b325146986ca86a213e0d3a597d67 100644 (file)
@@ -11,6 +11,7 @@ import (
 
        csv_module "code.gitea.io/gitea/modules/csv"
        "code.gitea.io/gitea/modules/setting"
+
        "github.com/stretchr/testify/assert"
 )
 
index b0bbe42273d11900593ee33eb1fb65d0aaf98af9..bc2721ebd41958f9593d8ef07c64aa63da32e4a9 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index fa6ad613b69420c837999d068298bba113ee334d..fdc2c4ffb6414cb5d6e0c23245a5664407639574 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index 197d76b0561ae71756f21cca97e9da332b5a5eb8..1280a3d84da1b24db878e01b787f39c60bc1910d 100644 (file)
@@ -9,6 +9,7 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/models/unittest"
+
        "github.com/stretchr/testify/assert"
 )
 
index cfc99d796a5366564fa221c3c94d24851c4bca98..551c957c8d1e2d11bf5d607988e1a7c5fd3c97e9 100644 (file)
@@ -10,6 +10,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/modules/setting"
+
        "github.com/stretchr/testify/assert"
 )
 
index 0a649d36aed8920f087d2448ceb75f2b20d6dc0b..c3323327870ff032c59461f34503c028a3d409f9 100644 (file)
@@ -11,6 +11,7 @@ import (
        "code.gitea.io/gitea/models/unittest"
        webhook_model "code.gitea.io/gitea/models/webhook"
        api "code.gitea.io/gitea/modules/structs"
+
        "github.com/stretchr/testify/assert"
 )