]> source.dussan.org Git - gitea.git/commitdiff
migrate from com.* to alternatives (#14103)
author6543 <6543@obermui.de>
Fri, 25 Dec 2020 09:59:32 +0000 (09:59 +0000)
committerGitHub <noreply@github.com>
Fri, 25 Dec 2020 09:59:32 +0000 (11:59 +0200)
* remove github.com/unknwon/com from models

* dont use "com.ToStr()"

* replace "com.ToStr" with "fmt.Sprint" where its easy to do

* more refactor

* fix test

* just "proxy" Copy func for now

* as per @lunny

46 files changed:
cmd/serv.go
contrib/pr/checkout.go
integrations/git_helper_for_declarative_test.go
integrations/integration_test.go
integrations/migration-test/migration_test.go
models/action.go
models/admin.go
models/branches.go
models/issue.go
models/issue_comment.go
models/issue_xref.go
models/login_source.go
models/oauth2_application.go
models/repo.go
models/repo_unit.go
models/ssh_key.go
models/unit_tests.go
models/user.go
modules/base/tool.go
modules/convert/convert.go
modules/git/repo.go
modules/ssh/ssh.go
modules/util/compare.go
modules/util/copy.go [new file with mode: 0644]
routers/admin/auths.go
routers/admin/emails.go
routers/admin/notice.go
routers/admin/users.go
routers/api/v1/user/user.go
routers/api/v1/utils/hook.go
routers/install.go
routers/org/members.go
routers/org/teams.go
routers/repo/issue.go
routers/repo/lfs.go
routers/repo/pull.go
routers/repo/webhook.go
services/archiver/archiver_test.go
services/mirror/mirror.go
services/pull/check.go
services/pull/check_test.go
services/pull/pull.go
services/repository/transfer.go
services/repository/transfer_test.go
services/webhook/deliver.go
services/wiki/wiki.go

index 1b41a5a0782cb8ca1e25967212eed71d770ae6aa..fb1e581134bce7548f4012756628ed4c836b0ac3 100644 (file)
@@ -26,7 +26,6 @@ import (
 
        "github.com/dgrijalva/jwt-go"
        "github.com/kballard/go-shellquote"
-       "github.com/unknwon/com"
        "github.com/urfave/cli"
 )
 
@@ -105,7 +104,10 @@ func runServ(c *cli.Context) error {
        if len(keys) != 2 || keys[0] != "key" {
                fail("Key ID format error", "Invalid key argument: %s", c.Args()[0])
        }
-       keyID := com.StrTo(keys[1]).MustInt64()
+       keyID, err := strconv.ParseInt(keys[1], 10, 64)
+       if err != nil {
+               fail("Key ID format error", "Invalid key argument: %s", c.Args()[1])
+       }
 
        cmd := os.Getenv("SSH_ORIGINAL_COMMAND")
        if len(cmd) == 0 {
index 528838082560d253c42a2397fea7549b83fb9f9a..9346577bd69704b338a7e3f52a2f6d21d62abec1 100644 (file)
@@ -37,7 +37,6 @@ import (
        "github.com/go-git/go-git/v5/config"
        "github.com/go-git/go-git/v5/plumbing"
        context2 "github.com/gorilla/context"
-       "github.com/unknwon/com"
        "xorm.io/xorm"
 )
 
@@ -111,7 +110,7 @@ func runPR() {
        models.LoadFixtures()
        util.RemoveAll(setting.RepoRootPath)
        util.RemoveAll(models.LocalCopyPath())
-       com.CopyDir(path.Join(curDir, "integrations/gitea-repositories-meta"), setting.RepoRootPath)
+       util.CopyDir(path.Join(curDir, "integrations/gitea-repositories-meta"), setting.RepoRootPath)
 
        log.Printf("[PR] Setting up router\n")
        //routers.GlobalInit()
index f681cd143a12e93c2d9e990f852fc95aad71d182..d99d80a7c706b95d2737c98ece36048d0ac1b6cb 100644 (file)
@@ -24,7 +24,6 @@ import (
        "code.gitea.io/gitea/modules/util"
 
        "github.com/stretchr/testify/assert"
-       "github.com/unknwon/com"
 )
 
 func withKeyFile(t *testing.T, keyname string, callback func(string)) {
@@ -112,7 +111,9 @@ func onGiteaRun(t *testing.T, callback func(*testing.T, *url.URL), prepare ...bo
 func doGitClone(dstLocalPath string, u *url.URL) func(*testing.T) {
        return func(t *testing.T) {
                assert.NoError(t, git.CloneWithArgs(context.Background(), u.String(), dstLocalPath, allowLFSFilters(), git.CloneRepoOptions{}))
-               assert.True(t, com.IsExist(filepath.Join(dstLocalPath, "README.md")))
+               exist, err := util.IsExist(filepath.Join(dstLocalPath, "README.md"))
+               assert.NoError(t, err)
+               assert.True(t, exist)
        }
 }
 
@@ -122,7 +123,9 @@ func doGitCloneFail(u *url.URL) func(*testing.T) {
                assert.NoError(t, err)
                defer util.RemoveAll(tmpDir)
                assert.Error(t, git.Clone(u.String(), tmpDir, git.CloneRepoOptions{}))
-               assert.False(t, com.IsExist(filepath.Join(tmpDir, "README.md")))
+               exist, err := util.IsExist(filepath.Join(tmpDir, "README.md"))
+               assert.NoError(t, err)
+               assert.False(t, exist)
        }
 }
 
index 00aba15603b0bd6aa6cfc34cb6ddc75b8735e8c1..f3b2644c7839f820f20cb022821d9d56f2d20dd8 100644 (file)
@@ -37,7 +37,6 @@ import (
        "github.com/PuerkitoBio/goquery"
        "github.com/go-chi/chi"
        "github.com/stretchr/testify/assert"
-       "github.com/unknwon/com"
 )
 
 var c chi.Router
@@ -231,8 +230,7 @@ func prepareTestEnv(t testing.TB, skip ...int) func() {
        assert.NoError(t, models.LoadFixtures())
        assert.NoError(t, util.RemoveAll(setting.RepoRootPath))
 
-       assert.NoError(t, com.CopyDir(path.Join(filepath.Dir(setting.AppPath), "integrations/gitea-repositories-meta"),
-               setting.RepoRootPath))
+       assert.NoError(t, util.CopyDir(path.Join(filepath.Dir(setting.AppPath), "integrations/gitea-repositories-meta"), setting.RepoRootPath))
        return deferFn
 }
 
@@ -473,6 +471,5 @@ func resetFixtures(t *testing.T) {
        assert.NoError(t, queue.GetManager().FlushAll(context.Background(), -1))
        assert.NoError(t, models.LoadFixtures())
        assert.NoError(t, util.RemoveAll(setting.RepoRootPath))
-       assert.NoError(t, com.CopyDir(path.Join(filepath.Dir(setting.AppPath), "integrations/gitea-repositories-meta"),
-               setting.RepoRootPath))
+       assert.NoError(t, util.CopyDir(path.Join(filepath.Dir(setting.AppPath), "integrations/gitea-repositories-meta"), setting.RepoRootPath))
 }
index 19a132054fcdfa4710bfa6c9085f00b8d6684fac..852c0b737c2da87d686e6c84b50b1c01a02f0918 100644 (file)
@@ -27,7 +27,6 @@ import (
        "code.gitea.io/gitea/modules/util"
 
        "github.com/stretchr/testify/assert"
-       "github.com/unknwon/com"
        "xorm.io/xorm"
 )
 
@@ -60,7 +59,7 @@ func initMigrationTest(t *testing.T) func() {
 
        assert.True(t, len(setting.RepoRootPath) != 0)
        assert.NoError(t, util.RemoveAll(setting.RepoRootPath))
-       assert.NoError(t, com.CopyDir(path.Join(filepath.Dir(setting.AppPath), "integrations/gitea-repositories-meta"), setting.RepoRootPath))
+       assert.NoError(t, util.CopyDir(path.Join(filepath.Dir(setting.AppPath), "integrations/gitea-repositories-meta"), setting.RepoRootPath))
 
        setting.CheckLFSVersion()
        setting.InitDBConfig()
index c39fdc397a5cc4c110be1c066f7e8df52c864922..ccf161192e334daf47fc300ab077aad9dee84172 100644 (file)
@@ -18,7 +18,6 @@ import (
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/modules/timeutil"
 
-       "github.com/unknwon/com"
        "xorm.io/builder"
 )
 
@@ -266,7 +265,7 @@ func (a *Action) GetIssueInfos() []string {
 // GetIssueTitle returns the title of first issue associated
 // with the action.
 func (a *Action) GetIssueTitle() string {
-       index := com.StrTo(a.GetIssueInfos()[0]).MustInt64()
+       index, _ := strconv.ParseInt(a.GetIssueInfos()[0], 10, 64)
        issue, err := GetIssueByIndex(a.RepoID, index)
        if err != nil {
                log.Error("GetIssueByIndex: %v", err)
@@ -278,7 +277,7 @@ func (a *Action) GetIssueTitle() string {
 // GetIssueContent returns the content of first issue associated with
 // this action.
 func (a *Action) GetIssueContent() string {
-       index := com.StrTo(a.GetIssueInfos()[0]).MustInt64()
+       index, _ := strconv.ParseInt(a.GetIssueInfos()[0], 10, 64)
        issue, err := GetIssueByIndex(a.RepoID, index)
        if err != nil {
                log.Error("GetIssueByIndex: %v", err)
index 903e35b0c9898d7aabfc548e42051a6456819d5f..420adbcda9991a3b2af585ab306d60fcb97750ec 100644 (file)
@@ -12,8 +12,6 @@ import (
        "code.gitea.io/gitea/modules/storage"
        "code.gitea.io/gitea/modules/timeutil"
        "code.gitea.io/gitea/modules/util"
-
-       "github.com/unknwon/com"
 )
 
 //NoticeType describes the notice type
@@ -36,7 +34,7 @@ type Notice struct {
 
 // TrStr returns a translation format string.
 func (n *Notice) TrStr() string {
-       return "admin.notices.type_" + com.ToStr(n.Type)
+       return fmt.Sprintf("admin.notices.type_%d", n.Type)
 }
 
 // CreateNotice creates new system notice.
index 144767ee9549b560c74b4bfdc293a67a2ba5aeb5..80df8c433eb0fa250d98217ce55d5f6de1c92718 100644 (file)
@@ -16,7 +16,6 @@ import (
        "code.gitea.io/gitea/modules/util"
 
        "github.com/gobwas/glob"
-       "github.com/unknwon/com"
 )
 
 // ProtectedBranch struct
@@ -483,7 +482,7 @@ func updateTeamWhitelist(repo *Repository, currentWhitelist, newWhitelist []int6
 
        whitelist = make([]int64, 0, len(teams))
        for i := range teams {
-               if com.IsSliceContainsInt64(newWhitelist, teams[i].ID) {
+               if util.IsInt64InSlice(teams[i].ID, newWhitelist) {
                        whitelist = append(whitelist, teams[i].ID)
                }
        }
index 787d873f249a48650429bf7bd25d461080ec3dd8..3161fd3e8237e13ed508a818b2758766ef3b9c4e 100644 (file)
@@ -20,7 +20,6 @@ import (
        "code.gitea.io/gitea/modules/timeutil"
        "code.gitea.io/gitea/modules/util"
 
-       "github.com/unknwon/com"
        "xorm.io/builder"
        "xorm.io/xorm"
 )
@@ -386,7 +385,7 @@ func (issue *Issue) State() api.StateType {
 
 // HashTag returns unique hash tag for issue.
 func (issue *Issue) HashTag() string {
-       return "issue-" + com.ToStr(issue.ID)
+       return fmt.Sprintf("issue-%d", issue.ID)
 }
 
 // IsPoster returns true if given user by ID is the poster.
@@ -1374,7 +1373,8 @@ func parseCountResult(results []map[string][]byte) int64 {
                return 0
        }
        for _, result := range results[0] {
-               return com.StrTo(string(result)).MustInt64()
+               c, _ := strconv.ParseInt(string(result), 10, 64)
+               return c
        }
        return 0
 }
index 7bcea40b9300670424977d4e303596524426ac36..a5cb91ac75e5212a694730067856afdcade6a438 100644 (file)
@@ -22,7 +22,6 @@ import (
        "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/modules/timeutil"
 
-       "github.com/unknwon/com"
        "xorm.io/builder"
        "xorm.io/xorm"
 )
@@ -367,7 +366,7 @@ func (c *Comment) HashTag() string {
 
 // EventTag returns unique event hash tag for comment.
 func (c *Comment) EventTag() string {
-       return "event-" + com.ToStr(c.ID)
+       return fmt.Sprintf("event-%d", c.ID)
 }
 
 // LoadLabel if comment.Type is CommentTypeLabel, then load Label
index 104691fe93f0663d57ad49f793858477251567a0..7834b6ecc00cdfd7aeb047208ac4e387b1167524 100644 (file)
@@ -10,7 +10,6 @@ import (
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/references"
 
-       "github.com/unknwon/com"
        "xorm.io/xorm"
 )
 
@@ -324,7 +323,7 @@ func (comment *Comment) RefIssueIdent() string {
                return ""
        }
        // FIXME: check this name for cross-repository references (#7901 if it gets merged)
-       return "#" + com.ToStr(comment.RefIssue.Index)
+       return fmt.Sprintf("#%d", comment.RefIssue.Index)
 }
 
 // __________      .__  .__ __________                                     __
index 1de24a9cf70b52396dfe862ef438b44431d9b42a..4f577d6ca740f04b66b693e08c56c45583f4e35c 100644 (file)
@@ -12,6 +12,7 @@ import (
        "fmt"
        "net/smtp"
        "net/textproto"
+       "strconv"
        "strings"
 
        "code.gitea.io/gitea/modules/auth/ldap"
@@ -20,8 +21,8 @@ import (
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/modules/timeutil"
+       "code.gitea.io/gitea/modules/util"
 
-       "github.com/unknwon/com"
        "xorm.io/xorm"
        "xorm.io/xorm/convert"
 )
@@ -180,7 +181,9 @@ func Cell2Int64(val xorm.Cell) int64 {
        switch (*val).(type) {
        case []uint8:
                log.Trace("Cell2Int64 ([]uint8): %v", *val)
-               return com.StrTo(string((*val).([]uint8))).MustInt64()
+
+               v, _ := strconv.ParseInt(string((*val).([]uint8)), 10, 64)
+               return v
        }
        return (*val).(int64)
 }
@@ -200,7 +203,7 @@ func (source *LoginSource) BeforeSet(colName string, val xorm.Cell) {
                case LoginSSPI:
                        source.Cfg = new(SSPIConfig)
                default:
-                       panic("unrecognized login source type: " + com.ToStr(*val))
+                       panic(fmt.Sprintf("unrecognized login source type: %v", *val))
                }
        }
 }
@@ -610,7 +613,7 @@ func LoginViaSMTP(user *User, login, password string, sourceID int64, cfg *SMTPC
                idx := strings.Index(login, "@")
                if idx == -1 {
                        return nil, ErrUserNotExist{0, login, 0}
-               } else if !com.IsSliceContainsStr(strings.Split(cfg.AllowedDomains, ","), login[idx+1:]) {
+               } else if !util.IsStringInSlice(login[idx+1:], strings.Split(cfg.AllowedDomains, ","), true) {
                        return nil, ErrUserNotExist{0, login, 0}
                }
        }
index 1c7937685c86d669613339cf814bcb4e842ec137..af4d280d0cfe81c5d2cda974231b413496e60ff2 100644 (file)
@@ -14,10 +14,10 @@ import (
        "code.gitea.io/gitea/modules/secret"
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/modules/timeutil"
+       "code.gitea.io/gitea/modules/util"
 
        "github.com/dgrijalva/jwt-go"
        uuid "github.com/google/uuid"
-       "github.com/unknwon/com"
        "golang.org/x/crypto/bcrypt"
        "xorm.io/xorm"
 )
@@ -62,7 +62,7 @@ func (app *OAuth2Application) LoadUser() (err error) {
 
 // ContainsRedirectURI checks if redirectURI is allowed for app
 func (app *OAuth2Application) ContainsRedirectURI(redirectURI string) bool {
-       return com.IsSliceContainsStr(app.RedirectURIs, redirectURI)
+       return util.IsStringInSlice(redirectURI, app.RedirectURIs, true)
 }
 
 // GenerateClientSecret will generate the client secret and returns the plaintext and saves the hash at the database
index d791b6cbd22584c45d51ff9696db1f1d4b8f7824..7dfe14c85b81aacbe126d8cfc8570f2a47db149c 100644 (file)
@@ -34,7 +34,6 @@ import (
        "code.gitea.io/gitea/modules/timeutil"
        "code.gitea.io/gitea/modules/util"
 
-       "github.com/unknwon/com"
        "xorm.io/builder"
 )
 
@@ -85,7 +84,7 @@ func loadRepoConfig() {
                        }
 
                        for _, f := range customFiles {
-                               if !com.IsSliceContainsStr(files, f) {
+                               if !util.IsStringInSlice(f, files, true) {
                                        files = append(files, f)
                                }
                        }
@@ -115,12 +114,12 @@ func loadRepoConfig() {
        // Filter out invalid names and promote preferred licenses.
        sortedLicenses := make([]string, 0, len(Licenses))
        for _, name := range setting.Repository.PreferredLicenses {
-               if com.IsSliceContainsStr(Licenses, name) {
+               if util.IsStringInSlice(name, Licenses, true) {
                        sortedLicenses = append(sortedLicenses, name)
                }
        }
        for _, name := range Licenses {
-               if !com.IsSliceContainsStr(setting.Repository.PreferredLicenses, name) {
+               if !util.IsStringInSlice(name, setting.Repository.PreferredLicenses, true) {
                        sortedLicenses = append(sortedLicenses, name)
                }
        }
@@ -1933,7 +1932,7 @@ func repoStatsCheck(ctx context.Context, checker *repoChecker) {
                return
        }
        for _, result := range results {
-               id := com.StrTo(result["id"]).MustInt64()
+               id, _ := strconv.ParseInt(string(result["id"]), 10, 64)
                select {
                case <-ctx.Done():
                        log.Warn("CheckRepoStats: Cancelled before checking %s for Repo[%d]", checker.desc, id)
@@ -2001,7 +2000,7 @@ func CheckRepoStats(ctx context.Context) error {
                log.Error("Select %s: %v", desc, err)
        } else {
                for _, result := range results {
-                       id := com.StrTo(result["id"]).MustInt64()
+                       id, _ := strconv.ParseInt(string(result["id"]), 10, 64)
                        select {
                        case <-ctx.Done():
                                log.Warn("CheckRepoStats: Cancelled during %s for repo ID %d", desc, id)
@@ -2024,7 +2023,7 @@ func CheckRepoStats(ctx context.Context) error {
                log.Error("Select %s: %v", desc, err)
        } else {
                for _, result := range results {
-                       id := com.StrTo(result["id"]).MustInt64()
+                       id, _ := strconv.ParseInt(string(result["id"]), 10, 64)
                        select {
                        case <-ctx.Done():
                                log.Warn("CheckRepoStats: Cancelled")
@@ -2047,7 +2046,7 @@ func CheckRepoStats(ctx context.Context) error {
                log.Error("Select repository count 'num_forks': %v", err)
        } else {
                for _, result := range results {
-                       id := com.StrTo(result["id"]).MustInt64()
+                       id, _ := strconv.ParseInt(string(result["id"]), 10, 64)
                        select {
                        case <-ctx.Done():
                                log.Warn("CheckRepoStats: Cancelled")
index b208276d9d2c15ab8d29fe389a97aa0f941bb31a..8c2d458758a2d56ce4b4e55fbfce6fa1882a52fd 100644 (file)
@@ -6,10 +6,10 @@ package models
 
 import (
        "encoding/json"
+       "fmt"
 
        "code.gitea.io/gitea/modules/timeutil"
 
-       "github.com/unknwon/com"
        "xorm.io/xorm"
        "xorm.io/xorm/convert"
 )
@@ -147,7 +147,7 @@ func (r *RepoUnit) BeforeSet(colName string, val xorm.Cell) {
                case UnitTypeIssues:
                        r.Config = new(IssuesConfig)
                default:
-                       panic("unrecognized repo unit type: " + com.ToStr(*val))
+                       panic(fmt.Sprintf("unrecognized repo unit type: %v", *val))
                }
        }
 }
index f13fc61914a42afb56f5baae359224711560615e..b2e4326559a4c0182b2575cf0089b5b25e921d87 100644 (file)
@@ -20,6 +20,7 @@ import (
        "math/big"
        "os"
        "path/filepath"
+       "strconv"
        "strings"
        "sync"
        "time"
@@ -30,7 +31,6 @@ import (
        "code.gitea.io/gitea/modules/timeutil"
        "code.gitea.io/gitea/modules/util"
 
-       "github.com/unknwon/com"
        "golang.org/x/crypto/ssh"
        "xorm.io/builder"
        "xorm.io/xorm"
@@ -252,7 +252,11 @@ func SSHKeyGenParsePublicKey(key string) (string, int, error) {
        }
 
        keyType := strings.Trim(fields[len(fields)-1], "()\r\n")
-       return strings.ToLower(keyType), com.StrTo(fields[0]).MustInt(), nil
+       length, err := strconv.ParseInt(fields[0], 10, 32)
+       if err != nil {
+               return "", 0, err
+       }
+       return strings.ToLower(keyType), int(length), nil
 }
 
 // SSHNativeParsePublicKey extracts the key type and length using the golang SSH library.
@@ -744,7 +748,7 @@ func rewriteAllPublicKeys(e Engine) error {
                }
                if isExist {
                        bakPath := fmt.Sprintf("%s_%d.gitea_bak", fPath, time.Now().Unix())
-                       if err = com.Copy(fPath, bakPath); err != nil {
+                       if err = util.CopyFile(fPath, bakPath); err != nil {
                                return err
                        }
                }
@@ -1226,7 +1230,7 @@ func rewriteAllPrincipalKeys(e Engine) error {
                }
                if isExist {
                        bakPath := fmt.Sprintf("%s_%d.gitea_bak", fPath, time.Now().Unix())
-                       if err = com.Copy(fPath, bakPath); err != nil {
+                       if err = util.CopyFile(fPath, bakPath); err != nil {
                                return err
                        }
                }
index 7254cbf66b5c095e0ea1884d533355c9bfecdf5e..32996306342ec113af6784faf07c9d64a1b50686 100644 (file)
@@ -19,7 +19,6 @@ import (
        "code.gitea.io/gitea/modules/util"
 
        "github.com/stretchr/testify/assert"
-       "github.com/unknwon/com"
        "xorm.io/xorm"
        "xorm.io/xorm/names"
 )
@@ -82,8 +81,8 @@ func MainTest(m *testing.M, pathToGiteaRoot string) {
        if err = util.RemoveAll(setting.RepoRootPath); err != nil {
                fatalTestError("util.RemoveAll: %v\n", err)
        }
-       if err = com.CopyDir(filepath.Join(pathToGiteaRoot, "integrations", "gitea-repositories-meta"), setting.RepoRootPath); err != nil {
-               fatalTestError("com.CopyDir: %v\n", err)
+       if err = util.CopyDir(filepath.Join(pathToGiteaRoot, "integrations", "gitea-repositories-meta"), setting.RepoRootPath); err != nil {
+               fatalTestError("util.CopyDir: %v\n", err)
        }
 
        exitStatus := m.Run()
@@ -126,7 +125,7 @@ func PrepareTestEnv(t testing.TB) {
        assert.NoError(t, PrepareTestDatabase())
        assert.NoError(t, util.RemoveAll(setting.RepoRootPath))
        metaPath := filepath.Join(giteaRoot, "integrations", "gitea-repositories-meta")
-       assert.NoError(t, com.CopyDir(metaPath, setting.RepoRootPath))
+       assert.NoError(t, util.CopyDir(metaPath, setting.RepoRootPath))
        base.SetupGiteaRoot() // Makes sure GITEA_ROOT is set
 }
 
index 4bf9e196a0abdc7342499deed356fd5d64f7d044..73178f256c1bbb66d3afbe1d652683b8f885eea0 100644 (file)
@@ -32,7 +32,6 @@ import (
        "code.gitea.io/gitea/modules/timeutil"
        "code.gitea.io/gitea/modules/util"
 
-       "github.com/unknwon/com"
        "golang.org/x/crypto/argon2"
        "golang.org/x/crypto/bcrypt"
        "golang.org/x/crypto/pbkdf2"
@@ -315,7 +314,7 @@ func (u *User) HTMLURL() string {
 // GenerateEmailActivateCode generates an activate code based on user information and given e-mail.
 func (u *User) GenerateEmailActivateCode(email string) string {
        code := base.CreateTimeLimitCode(
-               com.ToStr(u.ID)+email+u.LowerName+u.Passwd+u.Rands,
+               fmt.Sprintf("%d%s%s%s%s", u.ID, email, u.LowerName, u.Passwd, u.Rands),
                setting.Service.ActiveCodeLives, nil)
 
        // Add tail hex username
@@ -880,7 +879,7 @@ func VerifyUserActiveCode(code string) (user *User) {
        if user = getVerifyUser(code); user != nil {
                // time limit code
                prefix := code[:base.TimeLimitCodeLength]
-               data := com.ToStr(user.ID) + user.Email + user.LowerName + user.Passwd + user.Rands
+               data := fmt.Sprintf("%d%s%s%s%s", user.ID, user.Email, user.LowerName, user.Passwd, user.Rands)
 
                if base.VerifyTimeLimitCode(data, minutes, prefix) {
                        return user
@@ -896,7 +895,7 @@ func VerifyActiveEmailCode(code, email string) *EmailAddress {
        if user := getVerifyUser(code); user != nil {
                // time limit code
                prefix := code[:base.TimeLimitCodeLength]
-               data := com.ToStr(user.ID) + email + user.LowerName + user.Passwd + user.Rands
+               data := fmt.Sprintf("%d%s%s%s%s", user.ID, email, user.LowerName, user.Passwd, user.Rands)
 
                if base.VerifyTimeLimitCode(data, minutes, prefix) {
                        emailAddress := &EmailAddress{UID: user.ID, Email: email}
index 00b13f76c7bbb9a385721f6d46d1170f78a2361c..7ac572b85bb4af056c058e803449efb8878382c3 100644 (file)
@@ -26,7 +26,6 @@ import (
        "code.gitea.io/gitea/modules/setting"
 
        "github.com/dustin/go-humanize"
-       "github.com/unknwon/com"
 )
 
 // EncodeMD5 encodes string to md5 hex value.
@@ -86,8 +85,8 @@ func VerifyTimeLimitCode(data string, minutes int, code string) bool {
        // split code
        start := code[:12]
        lives := code[12:18]
-       if d, err := com.StrTo(lives).Int(); err == nil {
-               minutes = d
+       if d, err := strconv.ParseInt(lives, 10, 0); err == nil {
+               minutes = int(d)
        }
 
        // right active code
@@ -131,7 +130,7 @@ func CreateTimeLimitCode(data string, minutes int, startInf interface{}) string
 
        // create sha1 encode string
        sh := sha1.New()
-       _, _ = sh.Write([]byte(data + setting.SecretKey + startStr + endStr + com.ToStr(minutes)))
+       _, _ = sh.Write([]byte(fmt.Sprintf("%s%s%s%s%d", data, setting.SecretKey, startStr, endStr, minutes)))
        encoded := hex.EncodeToString(sh.Sum(nil))
 
        code := fmt.Sprintf("%s%06d%s", startStr, minutes, encoded)
@@ -223,7 +222,7 @@ func TruncateString(str string, limit int) string {
 func StringsToInt64s(strs []string) ([]int64, error) {
        ints := make([]int64, len(strs))
        for i := range strs {
-               n, err := com.StrTo(strs[i]).Int64()
+               n, err := strconv.ParseInt(strs[i], 10, 64)
                if err != nil {
                        return ints, err
                }
index 63dd072fc4d37887612d9b45cf1e93511011bbf6..109931dbc343338a50a2060af44d379dbff72a6e 100644 (file)
@@ -17,8 +17,6 @@ import (
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/modules/util"
        "code.gitea.io/gitea/services/webhook"
-
-       "github.com/unknwon/com"
 )
 
 // ToEmail convert models.EmailAddress to api.Email
@@ -169,7 +167,7 @@ func ToPublicKey(apiLink string, key *models.PublicKey) *api.PublicKey {
        return &api.PublicKey{
                ID:          key.ID,
                Key:         key.Content,
-               URL:         apiLink + com.ToStr(key.ID),
+               URL:         fmt.Sprintf("%s%d", apiLink, key.ID),
                Title:       key.Name,
                Fingerprint: key.Fingerprint,
                Created:     key.CreatedUnix.AsTime(),
@@ -263,7 +261,7 @@ func ToDeployKey(apiLink string, key *models.DeployKey) *api.DeployKey {
                KeyID:       key.KeyID,
                Key:         key.Content,
                Fingerprint: key.Fingerprint,
-               URL:         apiLink + com.ToStr(key.ID),
+               URL:         fmt.Sprintf("%s%d", apiLink, key.ID),
                Title:       key.Name,
                Created:     key.CreatedUnix.AsTime(),
                ReadOnly:    key.Mode == models.AccessModeRead, // All deploy keys are read-only.
index e824dcc3f29e9995563f3b6c70bdc4df79d26527..515899ab04984fd50bdbabfd5d6b836b83cd6e62 100644 (file)
@@ -15,8 +15,6 @@ import (
        "strconv"
        "strings"
        "time"
-
-       "github.com/unknwon/com"
 )
 
 // GPGSettings represents the default GPG settings for this repository
@@ -309,21 +307,24 @@ func parseSize(objects string) *CountObject {
        for _, line := range strings.Split(objects, "\n") {
                switch {
                case strings.HasPrefix(line, statCount):
-                       repoSize.Count = com.StrTo(line[7:]).MustInt64()
+                       repoSize.Count, _ = strconv.ParseInt(line[7:], 10, 64)
                case strings.HasPrefix(line, statSize):
-                       repoSize.Size = com.StrTo(line[6:]).MustInt64() * 1024
+                       repoSize.Size, _ = strconv.ParseInt(line[6:], 10, 64)
+                       repoSize.Size *= 1024
                case strings.HasPrefix(line, statInpack):
-                       repoSize.InPack = com.StrTo(line[9:]).MustInt64()
+                       repoSize.InPack, _ = strconv.ParseInt(line[9:], 10, 64)
                case strings.HasPrefix(line, statPacks):
-                       repoSize.Packs = com.StrTo(line[7:]).MustInt64()
+                       repoSize.Packs, _ = strconv.ParseInt(line[7:], 10, 64)
                case strings.HasPrefix(line, statSizePack):
-                       repoSize.SizePack = com.StrTo(line[11:]).MustInt64() * 1024
+                       repoSize.Count, _ = strconv.ParseInt(line[11:], 10, 64)
+                       repoSize.Count *= 1024
                case strings.HasPrefix(line, statPrunePackage):
-                       repoSize.PrunePack = com.StrTo(line[16:]).MustInt64()
+                       repoSize.PrunePack, _ = strconv.ParseInt(line[16:], 10, 64)
                case strings.HasPrefix(line, statGarbage):
-                       repoSize.Garbage = com.StrTo(line[9:]).MustInt64()
+                       repoSize.Garbage, _ = strconv.ParseInt(line[9:], 10, 64)
                case strings.HasPrefix(line, statSizeGarbage):
-                       repoSize.SizeGarbage = com.StrTo(line[14:]).MustInt64() * 1024
+                       repoSize.SizeGarbage, _ = strconv.ParseInt(line[14:], 10, 64)
+                       repoSize.SizeGarbage *= 1024
                }
        }
        return repoSize
index 4ba52d56537bf93dee76dfafcc170ab3dedd8b9a..2b7fd593b5eb1cf79fdc6618cf08919a863ed9a2 100644 (file)
@@ -25,7 +25,6 @@ import (
        "code.gitea.io/gitea/modules/util"
 
        "github.com/gliderlabs/ssh"
-       "github.com/unknwon/com"
        gossh "golang.org/x/crypto/ssh"
 )
 
@@ -58,13 +57,13 @@ func getExitStatusFromError(err error) int {
 }
 
 func sessionHandler(session ssh.Session) {
-       keyID := session.Context().Value(giteaKeyID).(int64)
+       keyID := fmt.Sprintf("%d", session.Context().Value(giteaKeyID).(int64))
 
        command := session.RawCommand()
 
        log.Trace("SSH: Payload: %v", command)
 
-       args := []string{"serv", "key-" + com.ToStr(keyID), "--config=" + setting.CustomConf}
+       args := []string{"serv", "key-" + keyID, "--config=" + setting.CustomConf}
        log.Trace("SSH: Arguments: %v", args)
        cmd := exec.Command(setting.AppPath, args...)
        cmd.Env = append(
index d4f77aed3ba089f91dd084bade91c23c1c7f3f63..cd9ba0d91ce8fac8b16a098bb59410a6d8e9651b 100644 (file)
@@ -4,7 +4,10 @@
 
 package util
 
-import "sort"
+import (
+       "sort"
+       "strings"
+)
 
 // Int64Slice attaches the methods of Interface to []int64, sorting in increasing order.
 type Int64Slice []int64
@@ -36,10 +39,22 @@ func ExistsInSlice(target string, slice []string) bool {
 }
 
 // IsStringInSlice sequential searches if string exists in slice.
-func IsStringInSlice(target string, slice []string) bool {
+func IsStringInSlice(target string, slice []string, insensitive ...bool) bool {
+       caseInsensitive := false
+       if len(insensitive) != 0 && insensitive[0] {
+               caseInsensitive = true
+               target = strings.ToLower(target)
+       }
+
        for i := 0; i < len(slice); i++ {
-               if slice[i] == target {
-                       return true
+               if caseInsensitive {
+                       if strings.ToLower(slice[i]) == target {
+                               return true
+                       }
+               } else {
+                       if slice[i] == target {
+                               return true
+                       }
                }
        }
        return false
diff --git a/modules/util/copy.go b/modules/util/copy.go
new file mode 100644 (file)
index 0000000..4676584
--- /dev/null
@@ -0,0 +1,20 @@
+// Copyright 2020 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 util
+
+import (
+       "github.com/unknwon/com"
+)
+
+// CopyFile copies file from source to target path.
+func CopyFile(src, dest string) error {
+       return com.Copy(src, dest)
+}
+
+// CopyDir copy files recursively from source to target directory.
+// It returns error when error occurs in underlying functions.
+func CopyDir(srcPath, destPath string) error {
+       return com.CopyDir(srcPath, destPath)
+}
index bae1c863e992f410a74cc2b23ca62abf62efa78f..ce9dd3836023548c2ea0ae2a3dd2cafc7e5d7dfa 100644 (file)
@@ -20,7 +20,6 @@ import (
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/modules/util"
 
-       "github.com/unknwon/com"
        "xorm.io/xorm/convert"
 )
 
@@ -373,7 +372,7 @@ func EditAuthSourcePost(ctx *context.Context, form auth.AuthenticationForm) {
        log.Trace("Authentication changed by admin(%s): %d", ctx.User.Name, source.ID)
 
        ctx.Flash.Success(ctx.Tr("admin.auths.update_success"))
-       ctx.Redirect(setting.AppSubURL + "/admin/auths/" + com.ToStr(form.ID))
+       ctx.Redirect(setting.AppSubURL + "/admin/auths/" + fmt.Sprint(form.ID))
 }
 
 // DeleteAuthSource response for deleting an auth source
index f0b14ce5e59dc59f6307d6ef014fa20f97a24361..4cc7253ca96f5479b1437ff3e3cbd88addae1fd3 100644 (file)
@@ -14,8 +14,6 @@ import (
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/modules/util"
-
-       "github.com/unknwon/com"
 )
 
 const (
@@ -114,7 +112,7 @@ func ActivateEmail(ctx *context.Context) {
 
        truefalse := map[string]bool{"1": true, "0": false}
 
-       uid := com.StrTo(ctx.Query("uid")).MustInt64()
+       uid := ctx.QueryInt64("uid")
        email := ctx.Query("email")
        primary, okp := truefalse[ctx.Query("primary")]
        activate, oka := truefalse[ctx.Query("activate")]
index ad2bad21630ca6b88147c0a7e3118e7a96b7d470..2ee1b59730d4d12585e62cb12cd388238b1db470 100644 (file)
@@ -6,13 +6,13 @@
 package admin
 
 import (
+       "strconv"
+
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/base"
        "code.gitea.io/gitea/modules/context"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
-
-       "github.com/unknwon/com"
 )
 
 const (
@@ -50,7 +50,7 @@ func DeleteNotices(ctx *context.Context) {
        strs := ctx.QueryStrings("ids[]")
        ids := make([]int64, 0, len(strs))
        for i := range strs {
-               id := com.StrTo(strs[i]).MustInt64()
+               id, _ := strconv.ParseInt(strs[i], 10, 64)
                if id > 0 {
                        ids = append(ids, id)
                }
index 06c391b8e075f0a0443bb6b1eb684a7eca0ff2cd..2ea496624b455c3042accdd356a356cd3b92f933 100644 (file)
@@ -6,6 +6,8 @@
 package admin
 
 import (
+       "fmt"
+       "strconv"
        "strings"
 
        "code.gitea.io/gitea/models"
@@ -17,8 +19,6 @@ import (
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/routers"
        "code.gitea.io/gitea/services/mailer"
-
-       "github.com/unknwon/com"
 )
 
 const (
@@ -92,8 +92,9 @@ func NewUserPost(ctx *context.Context, form auth.AdminCreateUserForm) {
        if len(form.LoginType) > 0 {
                fields := strings.Split(form.LoginType, "-")
                if len(fields) == 2 {
-                       u.LoginType = models.LoginType(com.StrTo(fields[0]).MustInt())
-                       u.LoginSource = com.StrTo(fields[1]).MustInt64()
+                       lType, _ := strconv.ParseInt(fields[0], 10, 0)
+                       u.LoginType = models.LoginType(lType)
+                       u.LoginSource, _ = strconv.ParseInt(fields[1], 10, 64)
                        u.LoginName = form.LoginName
                }
        }
@@ -154,7 +155,7 @@ func NewUserPost(ctx *context.Context, form auth.AdminCreateUserForm) {
        }
 
        ctx.Flash.Success(ctx.Tr("admin.users.new_success", u.Name))
-       ctx.Redirect(setting.AppSubURL + "/admin/users/" + com.ToStr(u.ID))
+       ctx.Redirect(setting.AppSubURL + "/admin/users/" + fmt.Sprint(u.ID))
 }
 
 func prepareUserInfo(ctx *context.Context) *models.User {
@@ -220,12 +221,12 @@ func EditUserPost(ctx *context.Context, form auth.AdminEditUserForm) {
 
        fields := strings.Split(form.LoginType, "-")
        if len(fields) == 2 {
-               loginType := models.LoginType(com.StrTo(fields[0]).MustInt())
-               loginSource := com.StrTo(fields[1]).MustInt64()
+               loginType, _ := strconv.ParseInt(fields[0], 10, 0)
+               loginSource, _ := strconv.ParseInt(fields[1], 10, 64)
 
                if u.LoginSource != loginSource {
                        u.LoginSource = loginSource
-                       u.LoginType = loginType
+                       u.LoginType = models.LoginType(loginType)
                }
        }
 
index 07d5e9112b1eef66911d9b7cb039b3010e6dc068..b860219e6290c1bc4aa6cfb35dbfa15a7dd4b640 100644 (file)
@@ -15,8 +15,6 @@ import (
        "code.gitea.io/gitea/modules/convert"
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/routers/api/v1/utils"
-
-       "github.com/unknwon/com"
 )
 
 // Search search users
@@ -61,7 +59,7 @@ func Search(ctx *context.APIContext) {
 
        opts := &models.SearchUserOptions{
                Keyword:     strings.Trim(ctx.Query("q"), " "),
-               UID:         com.StrTo(ctx.Query("uid")).MustInt64(),
+               UID:         ctx.QueryInt64("uid"),
                Type:        models.UserTypeIndividual,
                ListOptions: listOptions,
        }
index 8decc5cf4329d13b57c489513fb5b0df1d8f6d88..b0ce40b9fb736140bcefbba337ff4cd979e0c6c1 100644 (file)
@@ -14,10 +14,9 @@ import (
        "code.gitea.io/gitea/modules/context"
        "code.gitea.io/gitea/modules/convert"
        api "code.gitea.io/gitea/modules/structs"
+       "code.gitea.io/gitea/modules/util"
        "code.gitea.io/gitea/routers/utils"
        "code.gitea.io/gitea/services/webhook"
-
-       "github.com/unknwon/com"
 )
 
 // GetOrgHook get an organization's webhook. If there is an error, write to
@@ -89,11 +88,11 @@ func AddRepoHook(ctx *context.APIContext, form *api.CreateHookOption) {
 }
 
 func issuesHook(events []string, event string) bool {
-       return com.IsSliceContainsStr(events, event) || com.IsSliceContainsStr(events, string(models.HookEventIssues))
+       return util.IsStringInSlice(event, events, true) || util.IsStringInSlice(string(models.HookEventIssues), events, true)
 }
 
 func pullHook(events []string, event string) bool {
-       return com.IsSliceContainsStr(events, event) || com.IsSliceContainsStr(events, string(models.HookEventPullRequest))
+       return util.IsStringInSlice(event, events, true) || util.IsStringInSlice(string(models.HookEventPullRequest), events, true)
 }
 
 // addHook add the hook specified by `form`, `orgID` and `repoID`. If there is
@@ -112,15 +111,15 @@ func addHook(ctx *context.APIContext, form *api.CreateHookOption, orgID, repoID
                HookEvent: &models.HookEvent{
                        ChooseEvents: true,
                        HookEvents: models.HookEvents{
-                               Create:               com.IsSliceContainsStr(form.Events, string(models.HookEventCreate)),
-                               Delete:               com.IsSliceContainsStr(form.Events, string(models.HookEventDelete)),
-                               Fork:                 com.IsSliceContainsStr(form.Events, string(models.HookEventFork)),
+                               Create:               util.IsStringInSlice(string(models.HookEventCreate), form.Events, true),
+                               Delete:               util.IsStringInSlice(string(models.HookEventDelete), form.Events, true),
+                               Fork:                 util.IsStringInSlice(string(models.HookEventFork), form.Events, true),
                                Issues:               issuesHook(form.Events, "issues_only"),
                                IssueAssign:          issuesHook(form.Events, string(models.HookEventIssueAssign)),
                                IssueLabel:           issuesHook(form.Events, string(models.HookEventIssueLabel)),
                                IssueMilestone:       issuesHook(form.Events, string(models.HookEventIssueMilestone)),
                                IssueComment:         issuesHook(form.Events, string(models.HookEventIssueComment)),
-                               Push:                 com.IsSliceContainsStr(form.Events, string(models.HookEventPush)),
+                               Push:                 util.IsStringInSlice(string(models.HookEventPush), form.Events, true),
                                PullRequest:          pullHook(form.Events, "pull_request_only"),
                                PullRequestAssign:    pullHook(form.Events, string(models.HookEventPullRequestAssign)),
                                PullRequestLabel:     pullHook(form.Events, string(models.HookEventPullRequestLabel)),
@@ -128,8 +127,8 @@ func addHook(ctx *context.APIContext, form *api.CreateHookOption, orgID, repoID
                                PullRequestComment:   pullHook(form.Events, string(models.HookEventPullRequestComment)),
                                PullRequestReview:    pullHook(form.Events, "pull_request_review"),
                                PullRequestSync:      pullHook(form.Events, string(models.HookEventPullRequestSync)),
-                               Repository:           com.IsSliceContainsStr(form.Events, string(models.HookEventRepository)),
-                               Release:              com.IsSliceContainsStr(form.Events, string(models.HookEventRelease)),
+                               Repository:           util.IsStringInSlice(string(models.HookEventRepository), form.Events, true),
+                               Release:              util.IsStringInSlice(string(models.HookEventRelease), form.Events, true),
                        },
                        BranchFilter: form.BranchFilter,
                },
@@ -244,18 +243,18 @@ func editHook(ctx *context.APIContext, form *api.EditHookOption, w *models.Webho
        w.PushOnly = false
        w.SendEverything = false
        w.ChooseEvents = true
-       w.Create = com.IsSliceContainsStr(form.Events, string(models.HookEventCreate))
-       w.Push = com.IsSliceContainsStr(form.Events, string(models.HookEventPush))
-       w.PullRequest = com.IsSliceContainsStr(form.Events, string(models.HookEventPullRequest))
-       w.Create = com.IsSliceContainsStr(form.Events, string(models.HookEventCreate))
-       w.Delete = com.IsSliceContainsStr(form.Events, string(models.HookEventDelete))
-       w.Fork = com.IsSliceContainsStr(form.Events, string(models.HookEventFork))
-       w.Issues = com.IsSliceContainsStr(form.Events, string(models.HookEventIssues))
-       w.IssueComment = com.IsSliceContainsStr(form.Events, string(models.HookEventIssueComment))
-       w.Push = com.IsSliceContainsStr(form.Events, string(models.HookEventPush))
-       w.PullRequest = com.IsSliceContainsStr(form.Events, string(models.HookEventPullRequest))
-       w.Repository = com.IsSliceContainsStr(form.Events, string(models.HookEventRepository))
-       w.Release = com.IsSliceContainsStr(form.Events, string(models.HookEventRelease))
+       w.Create = util.IsStringInSlice(string(models.HookEventCreate), form.Events, true)
+       w.Push = util.IsStringInSlice(string(models.HookEventPush), form.Events, true)
+       w.PullRequest = util.IsStringInSlice(string(models.HookEventPullRequest), form.Events, true)
+       w.Create = util.IsStringInSlice(string(models.HookEventCreate), form.Events, true)
+       w.Delete = util.IsStringInSlice(string(models.HookEventDelete), form.Events, true)
+       w.Fork = util.IsStringInSlice(string(models.HookEventFork), form.Events, true)
+       w.Issues = util.IsStringInSlice(string(models.HookEventIssues), form.Events, true)
+       w.IssueComment = util.IsStringInSlice(string(models.HookEventIssueComment), form.Events, true)
+       w.Push = util.IsStringInSlice(string(models.HookEventPush), form.Events, true)
+       w.PullRequest = util.IsStringInSlice(string(models.HookEventPullRequest), form.Events, true)
+       w.Repository = util.IsStringInSlice(string(models.HookEventRepository), form.Events, true)
+       w.Release = util.IsStringInSlice(string(models.HookEventRelease), form.Events, true)
        w.BranchFilter = form.BranchFilter
 
        if err := w.UpdateEvent(); err != nil {
index 88786efb9586bef115fa39f9d0d630e05c76c86f..50e929b6f368fc9a0a4f3de83e12903f8d843c38 100644 (file)
@@ -5,6 +5,7 @@
 package routers
 
 import (
+       "fmt"
        "net/http"
        "os"
        "os/exec"
@@ -22,7 +23,6 @@ import (
        "code.gitea.io/gitea/modules/user"
        "code.gitea.io/gitea/modules/util"
 
-       "github.com/unknwon/com"
        "gopkg.in/ini.v1"
 )
 
@@ -294,7 +294,7 @@ func InstallPost(ctx *context.Context, form auth.InstallForm) {
                cfg.Section("server").Key("DISABLE_SSH").SetValue("true")
        } else {
                cfg.Section("server").Key("DISABLE_SSH").SetValue("false")
-               cfg.Section("server").Key("SSH_PORT").SetValue(com.ToStr(form.SSHPort))
+               cfg.Section("server").Key("SSH_PORT").SetValue(fmt.Sprint(form.SSHPort))
        }
 
        if form.LFSRootPath != "" {
@@ -319,22 +319,22 @@ func InstallPost(ctx *context.Context, form auth.InstallForm) {
        } else {
                cfg.Section("mailer").Key("ENABLED").SetValue("false")
        }
-       cfg.Section("service").Key("REGISTER_EMAIL_CONFIRM").SetValue(com.ToStr(form.RegisterConfirm))
-       cfg.Section("service").Key("ENABLE_NOTIFY_MAIL").SetValue(com.ToStr(form.MailNotify))
-
-       cfg.Section("server").Key("OFFLINE_MODE").SetValue(com.ToStr(form.OfflineMode))
-       cfg.Section("picture").Key("DISABLE_GRAVATAR").SetValue(com.ToStr(form.DisableGravatar))
-       cfg.Section("picture").Key("ENABLE_FEDERATED_AVATAR").SetValue(com.ToStr(form.EnableFederatedAvatar))
-       cfg.Section("openid").Key("ENABLE_OPENID_SIGNIN").SetValue(com.ToStr(form.EnableOpenIDSignIn))
-       cfg.Section("openid").Key("ENABLE_OPENID_SIGNUP").SetValue(com.ToStr(form.EnableOpenIDSignUp))
-       cfg.Section("service").Key("DISABLE_REGISTRATION").SetValue(com.ToStr(form.DisableRegistration))
-       cfg.Section("service").Key("ALLOW_ONLY_EXTERNAL_REGISTRATION").SetValue(com.ToStr(form.AllowOnlyExternalRegistration))
-       cfg.Section("service").Key("ENABLE_CAPTCHA").SetValue(com.ToStr(form.EnableCaptcha))
-       cfg.Section("service").Key("REQUIRE_SIGNIN_VIEW").SetValue(com.ToStr(form.RequireSignInView))
-       cfg.Section("service").Key("DEFAULT_KEEP_EMAIL_PRIVATE").SetValue(com.ToStr(form.DefaultKeepEmailPrivate))
-       cfg.Section("service").Key("DEFAULT_ALLOW_CREATE_ORGANIZATION").SetValue(com.ToStr(form.DefaultAllowCreateOrganization))
-       cfg.Section("service").Key("DEFAULT_ENABLE_TIMETRACKING").SetValue(com.ToStr(form.DefaultEnableTimetracking))
-       cfg.Section("service").Key("NO_REPLY_ADDRESS").SetValue(com.ToStr(form.NoReplyAddress))
+       cfg.Section("service").Key("REGISTER_EMAIL_CONFIRM").SetValue(fmt.Sprint(form.RegisterConfirm))
+       cfg.Section("service").Key("ENABLE_NOTIFY_MAIL").SetValue(fmt.Sprint(form.MailNotify))
+
+       cfg.Section("server").Key("OFFLINE_MODE").SetValue(fmt.Sprint(form.OfflineMode))
+       cfg.Section("picture").Key("DISABLE_GRAVATAR").SetValue(fmt.Sprint(form.DisableGravatar))
+       cfg.Section("picture").Key("ENABLE_FEDERATED_AVATAR").SetValue(fmt.Sprint(form.EnableFederatedAvatar))
+       cfg.Section("openid").Key("ENABLE_OPENID_SIGNIN").SetValue(fmt.Sprint(form.EnableOpenIDSignIn))
+       cfg.Section("openid").Key("ENABLE_OPENID_SIGNUP").SetValue(fmt.Sprint(form.EnableOpenIDSignUp))
+       cfg.Section("service").Key("DISABLE_REGISTRATION").SetValue(fmt.Sprint(form.DisableRegistration))
+       cfg.Section("service").Key("ALLOW_ONLY_EXTERNAL_REGISTRATION").SetValue(fmt.Sprint(form.AllowOnlyExternalRegistration))
+       cfg.Section("service").Key("ENABLE_CAPTCHA").SetValue(fmt.Sprint(form.EnableCaptcha))
+       cfg.Section("service").Key("REQUIRE_SIGNIN_VIEW").SetValue(fmt.Sprint(form.RequireSignInView))
+       cfg.Section("service").Key("DEFAULT_KEEP_EMAIL_PRIVATE").SetValue(fmt.Sprint(form.DefaultKeepEmailPrivate))
+       cfg.Section("service").Key("DEFAULT_ALLOW_CREATE_ORGANIZATION").SetValue(fmt.Sprint(form.DefaultAllowCreateOrganization))
+       cfg.Section("service").Key("DEFAULT_ENABLE_TIMETRACKING").SetValue(fmt.Sprint(form.DefaultEnableTimetracking))
+       cfg.Section("service").Key("NO_REPLY_ADDRESS").SetValue(fmt.Sprint(form.NoReplyAddress))
 
        cfg.Section("").Key("RUN_MODE").SetValue("prod")
 
index 9f13d1be3f722a69b1fae156289c954b48d9e609..00ca381ad0cad6f3a9d97b8ba43f219a653fd6cf 100644 (file)
@@ -11,8 +11,6 @@ import (
        "code.gitea.io/gitea/modules/context"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
-
-       "github.com/unknwon/com"
 )
 
 const (
@@ -70,7 +68,7 @@ func Members(ctx *context.Context) {
 
 // MembersAction response for operation to a member of organization
 func MembersAction(ctx *context.Context) {
-       uid := com.StrTo(ctx.Query("uid")).MustInt64()
+       uid := ctx.QueryInt64("uid")
        if uid == 0 {
                ctx.Redirect(ctx.Org.OrgLink + "/members")
                return
index 03fbf068da1a2715a13026260c99169b3d6785c4..fa98add6016250e7aab5e03577c519f4250d2333 100644 (file)
@@ -16,8 +16,6 @@ import (
        "code.gitea.io/gitea/modules/context"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/routers/utils"
-
-       "github.com/unknwon/com"
 )
 
 const (
@@ -50,7 +48,7 @@ func Teams(ctx *context.Context) {
 
 // TeamsAction response for join, leave, remove, add operations to team
 func TeamsAction(ctx *context.Context) {
-       uid := com.StrTo(ctx.Query("uid")).MustInt64()
+       uid := ctx.QueryInt64("uid")
        if uid == 0 {
                ctx.Redirect(ctx.Org.OrgLink + "/teams")
                return
@@ -155,7 +153,7 @@ func TeamsRepoAction(ctx *context.Context) {
                }
                err = ctx.Org.Team.AddRepository(repo)
        case "remove":
-               err = ctx.Org.Team.RemoveRepository(com.StrTo(ctx.Query("repoid")).MustInt64())
+               err = ctx.Org.Team.RemoveRepository(ctx.QueryInt64("repoid"))
        case "addall":
                err = ctx.Org.Team.AddAllRepositories()
        case "removeall":
index f1336ac791342d1c12cee330d68b1c880637b731..1d8d9c0366cc59ebb49609413f955d4e74e5f403 100644 (file)
@@ -114,7 +114,7 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption uti
        viewType := ctx.Query("type")
        sortType := ctx.Query("sort")
        types := []string{"all", "your_repositories", "assigned", "created_by", "mentioned"}
-       if !com.IsSliceContainsStr(types, viewType) {
+       if !util.IsStringInSlice(viewType, types, true) {
                viewType = "all"
        }
 
@@ -981,7 +981,7 @@ func NewIssuePost(ctx *context.Context, form auth.CreateIssueForm) {
        }
 
        log.Trace("Issue created: %d/%d", repo.ID, issue.ID)
-       ctx.Redirect(ctx.Repo.RepoLink + "/issues/" + com.ToStr(issue.Index))
+       ctx.Redirect(ctx.Repo.RepoLink + "/issues/" + fmt.Sprint(issue.Index))
 }
 
 // commentTag returns the CommentTag for a comment in/with the given repo, poster and issue
@@ -1061,10 +1061,10 @@ func ViewIssue(ctx *context.Context) {
 
        // Make sure type and URL matches.
        if ctx.Params(":type") == "issues" && issue.IsPull {
-               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(issue.Index))
+               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(issue.Index))
                return
        } else if ctx.Params(":type") == "pulls" && !issue.IsPull {
-               ctx.Redirect(ctx.Repo.RepoLink + "/issues/" + com.ToStr(issue.Index))
+               ctx.Redirect(ctx.Repo.RepoLink + "/issues/" + fmt.Sprint(issue.Index))
                return
        }
 
@@ -1411,7 +1411,7 @@ func ViewIssue(ctx *context.Context) {
                                                log.Error("IsProtectedBranch: %v", err)
                                        } else if !protected {
                                                canDelete = true
-                                               ctx.Data["DeleteBranchLink"] = ctx.Repo.RepoLink + "/pulls/" + com.ToStr(issue.Index) + "/cleanup"
+                                               ctx.Data["DeleteBranchLink"] = ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(issue.Index) + "/cleanup"
                                        }
                                }
                        }
index c74b088e2e4fd30e62e4f220e7d649d13cdb41dd..dc3ab4f54c335121d3c835ddcf2f8f12e17e1c45 100644 (file)
@@ -26,8 +26,6 @@ import (
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
        "code.gitea.io/gitea/modules/storage"
-
-       "github.com/unknwon/com"
 )
 
 const (
@@ -579,7 +577,7 @@ func LFSAutoAssociate(ctx *context.Context) {
                }
                var err error
                metas[i] = &models.LFSMetaObject{}
-               metas[i].Size, err = com.StrTo(oid[idx+1:]).Int64()
+               metas[i].Size, err = strconv.ParseInt(oid[idx+1:], 10, 64)
                if err != nil {
                        ctx.ServerError("LFSAutoAssociate", fmt.Errorf("Illegal oid input: %s %v", oid, err))
                        return
index b3a1478884cf5ccf78d370545847222564df1bdf..1594e9a9c4feac8c0fd9bc0c1dd2e5da2cbbed38 100644 (file)
@@ -31,8 +31,6 @@ import (
        "code.gitea.io/gitea/services/gitdiff"
        pull_service "code.gitea.io/gitea/services/pull"
        repo_service "code.gitea.io/gitea/services/repository"
-
-       "github.com/unknwon/com"
 )
 
 const (
@@ -732,7 +730,7 @@ func UpdatePullRequest(ctx *context.Context) {
        // ToDo: add check if maintainers are allowed to change branch ... (need migration & co)
        if !allowedUpdate {
                ctx.Flash.Error(ctx.Tr("repo.pulls.update_not_allowed"))
-               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(issue.Index))
+               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(issue.Index))
                return
        }
 
@@ -752,18 +750,18 @@ func UpdatePullRequest(ctx *context.Context) {
                                return
                        }
                        ctx.Flash.Error(flashError)
-                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(issue.Index))
+                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(issue.Index))
                        return
                }
                ctx.Flash.Error(err.Error())
-               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(issue.Index))
+               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(issue.Index))
                return
        }
 
        time.Sleep(1 * time.Second)
 
        ctx.Flash.Success(ctx.Tr("repo.pulls.update_branch_success"))
-       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(issue.Index))
+       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(issue.Index))
 }
 
 // MergePullRequest response for merging pull request
@@ -775,11 +773,11 @@ func MergePullRequest(ctx *context.Context, form auth.MergePullRequestForm) {
        if issue.IsClosed {
                if issue.IsPull {
                        ctx.Flash.Error(ctx.Tr("repo.pulls.is_closed"))
-                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(issue.Index))
+                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(issue.Index))
                        return
                }
                ctx.Flash.Error(ctx.Tr("repo.issues.closed_title"))
-               ctx.Redirect(ctx.Repo.RepoLink + "/issues/" + com.ToStr(issue.Index))
+               ctx.Redirect(ctx.Repo.RepoLink + "/issues/" + fmt.Sprint(issue.Index))
                return
        }
 
@@ -792,25 +790,25 @@ func MergePullRequest(ctx *context.Context, form auth.MergePullRequestForm) {
        }
        if !allowedMerge {
                ctx.Flash.Error(ctx.Tr("repo.pulls.update_not_allowed"))
-               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(issue.Index))
+               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(issue.Index))
                return
        }
 
        if !pr.CanAutoMerge() {
                ctx.Flash.Error(ctx.Tr("repo.pulls.no_merge_not_ready"))
-               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(issue.Index))
+               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(issue.Index))
                return
        }
 
        if pr.HasMerged {
                ctx.Flash.Error(ctx.Tr("repo.pulls.has_merged"))
-               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(issue.Index))
+               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(issue.Index))
                return
        }
 
        if pr.IsWorkInProgress() {
                ctx.Flash.Error(ctx.Tr("repo.pulls.no_merge_wip"))
-               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index))
+               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(pr.Index))
                return
        }
 
@@ -824,14 +822,14 @@ func MergePullRequest(ctx *context.Context, form auth.MergePullRequestForm) {
                        return
                } else if !isRepoAdmin {
                        ctx.Flash.Error(ctx.Tr("repo.pulls.no_merge_not_ready"))
-                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index))
+                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(pr.Index))
                        return
                }
        }
 
        if ctx.HasError() {
                ctx.Flash.Error(ctx.Data["ErrorMsg"].(string))
-               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index))
+               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(pr.Index))
                return
        }
 
@@ -863,14 +861,14 @@ func MergePullRequest(ctx *context.Context, form auth.MergePullRequestForm) {
 
        if !noDeps {
                ctx.Flash.Error(ctx.Tr("repo.issues.dependency.pr_close_blocked"))
-               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index))
+               ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(pr.Index))
                return
        }
 
        if err = pull_service.Merge(pr, ctx.User, ctx.Repo.GitRepo, models.MergeStyle(form.Do), message); err != nil {
                if models.IsErrInvalidMergeStyle(err) {
                        ctx.Flash.Error(ctx.Tr("repo.pulls.invalid_merge_option"))
-                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index))
+                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(pr.Index))
                        return
                } else if models.IsErrMergeConflicts(err) {
                        conflictError := err.(models.ErrMergeConflicts)
@@ -884,7 +882,7 @@ func MergePullRequest(ctx *context.Context, form auth.MergePullRequestForm) {
                                return
                        }
                        ctx.Flash.Error(flashError)
-                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index))
+                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(pr.Index))
                        return
                } else if models.IsErrRebaseConflicts(err) {
                        conflictError := err.(models.ErrRebaseConflicts)
@@ -898,17 +896,17 @@ func MergePullRequest(ctx *context.Context, form auth.MergePullRequestForm) {
                                return
                        }
                        ctx.Flash.Error(flashError)
-                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index))
+                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(pr.Index))
                        return
                } else if models.IsErrMergeUnrelatedHistories(err) {
                        log.Debug("MergeUnrelatedHistories error: %v", err)
                        ctx.Flash.Error(ctx.Tr("repo.pulls.unrelated_histories"))
-                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index))
+                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(pr.Index))
                        return
                } else if git.IsErrPushOutOfDate(err) {
                        log.Debug("MergePushOutOfDate error: %v", err)
                        ctx.Flash.Error(ctx.Tr("repo.pulls.merge_out_of_date"))
-                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index))
+                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(pr.Index))
                        return
                } else if git.IsErrPushRejected(err) {
                        log.Debug("MergePushRejected error: %v", err)
@@ -928,7 +926,7 @@ func MergePullRequest(ctx *context.Context, form auth.MergePullRequestForm) {
                                }
                                ctx.Flash.Error(flashError)
                        }
-                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index))
+                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(pr.Index))
                        return
                }
                ctx.ServerError("Merge", err)
@@ -941,7 +939,7 @@ func MergePullRequest(ctx *context.Context, form auth.MergePullRequestForm) {
        }
 
        log.Trace("Pull request merged: %d", pr.ID)
-       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pr.Index))
+       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(pr.Index))
 }
 
 func stopTimerIfAvailable(user *models.User, issue *models.Issue) error {
@@ -1052,7 +1050,7 @@ func CompareAndPullRequestPost(ctx *context.Context, form auth.CreateIssueForm)
                                }
                                ctx.Flash.Error(flashError)
                        }
-                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pullIssue.Index))
+                       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(pullIssue.Index))
                        return
                }
                ctx.ServerError("NewPullRequest", err)
@@ -1060,7 +1058,7 @@ func CompareAndPullRequestPost(ctx *context.Context, form auth.CreateIssueForm)
        }
 
        log.Trace("Pull request created: %d/%d", repo.ID, pullIssue.ID)
-       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + com.ToStr(pullIssue.Index))
+       ctx.Redirect(ctx.Repo.RepoLink + "/pulls/" + fmt.Sprint(pullIssue.Index))
 }
 
 // TriggerTask response for a trigger task request
@@ -1159,7 +1157,7 @@ func CleanUpPullRequest(ctx *context.Context) {
 
        defer func() {
                ctx.JSON(200, map[string]interface{}{
-                       "redirect": pr.BaseRepo.Link() + "/pulls/" + com.ToStr(issue.Index),
+                       "redirect": pr.BaseRepo.Link() + "/pulls/" + fmt.Sprint(issue.Index),
                })
        }()
 
index 49aec8184b4ae7cccc567f34e21af72808dc31df..0c3fd1267d684dd427c49a4129b829bb0ef77f49 100644 (file)
@@ -20,9 +20,8 @@ import (
        "code.gitea.io/gitea/modules/git"
        "code.gitea.io/gitea/modules/setting"
        api "code.gitea.io/gitea/modules/structs"
+       "code.gitea.io/gitea/modules/util"
        "code.gitea.io/gitea/services/webhook"
-
-       "github.com/unknwon/com"
 )
 
 const (
@@ -100,7 +99,7 @@ func getOrgRepoCtx(ctx *context.Context) (*orgRepoCtx, error) {
 
 func checkHookType(ctx *context.Context) string {
        hookType := strings.ToLower(ctx.Params(":type"))
-       if !com.IsSliceContainsStr(setting.Webhook.Types, hookType) {
+       if !util.IsStringInSlice(hookType, setting.Webhook.Types, true) {
                ctx.NotFound("checkHookType", nil)
                return ""
        }
index 8a0f73bf9c460698a0206c3ddc8b97e7994b6d85..84bab148182a3760f00b846dbff065a6ea8edfc1 100644 (file)
@@ -12,9 +12,9 @@ import (
 
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/test"
+       "code.gitea.io/gitea/modules/util"
 
        "github.com/stretchr/testify/assert"
-       "github.com/unknwon/com"
 )
 
 var queueMutex sync.Mutex
@@ -144,7 +144,9 @@ func TestArchive_Basic(t *testing.T) {
 
        for _, req := range inFlight {
                assert.True(t, req.IsComplete())
-               assert.True(t, com.IsExist(req.GetArchivePath()))
+               exist, err := util.IsExist(req.GetArchivePath())
+               assert.NoError(t, err)
+               assert.True(t, exist)
        }
 
        arbitraryReq := inFlight[0]
index 7c3d0d2239b64043307d261627ed709d217da95a..a2acb6f3633c4525eb80440c8e4bdce995ea4a79 100644 (file)
@@ -8,6 +8,7 @@ import (
        "context"
        "fmt"
        "net/url"
+       "strconv"
        "strings"
        "time"
 
@@ -22,8 +23,6 @@ import (
        "code.gitea.io/gitea/modules/sync"
        "code.gitea.io/gitea/modules/timeutil"
        "code.gitea.io/gitea/modules/util"
-
-       "github.com/unknwon/com"
 )
 
 // mirrorQueue holds an UniqueQueue object of the mirror
@@ -396,11 +395,11 @@ func syncMirror(repoID string) {
        }()
        mirrorQueue.Remove(repoID)
 
-       m, err := models.GetMirrorByRepoID(com.StrTo(repoID).MustInt64())
+       id, _ := strconv.ParseInt(repoID, 10, 64)
+       m, err := models.GetMirrorByRepoID(id)
        if err != nil {
                log.Error("GetMirrorByRepoID [%s]: %v", repoID, err)
                return
-
        }
 
        log.Trace("SyncMirrors [repo: %-v]: Running Sync", m.Repo)
index 8665b3e7dfc787909a9f457d4c17a4866bb6bfc3..5acee8174bf38f0cb9021e7a45a423eda2372384 100644 (file)
@@ -21,8 +21,6 @@ import (
        "code.gitea.io/gitea/modules/queue"
        "code.gitea.io/gitea/modules/timeutil"
        "code.gitea.io/gitea/modules/util"
-
-       "github.com/unknwon/com"
 )
 
 // prQueue represents a queue to handle update pull request tests
@@ -203,14 +201,13 @@ func InitializePullRequests(ctx context.Context) {
 // handle passed PR IDs and test the PRs
 func handle(data ...queue.Data) {
        for _, datum := range data {
-               prID := datum.(string)
-               id := com.StrTo(prID).MustInt64()
+               id, _ := strconv.ParseInt(datum.(string), 10, 64)
 
                log.Trace("Testing PR ID %d from the pull requests patch checking queue", id)
 
                pr, err := models.GetPullRequestByID(id)
                if err != nil {
-                       log.Error("GetPullRequestByID[%s]: %v", prID, err)
+                       log.Error("GetPullRequestByID[%s]: %v", datum, err)
                        continue
                } else if pr.HasMerged {
                        continue
index 1bddc0b592969362cea31711e6cc4e0b72ea9904..33a230e5ab86b9fdd98eb83710312d9fc6c82990 100644 (file)
@@ -15,7 +15,6 @@ import (
        "code.gitea.io/gitea/modules/queue"
 
        "github.com/stretchr/testify/assert"
-       "github.com/unknwon/com"
 )
 
 func TestPullRequest_AddToTaskQueue(t *testing.T) {
@@ -25,8 +24,7 @@ func TestPullRequest_AddToTaskQueue(t *testing.T) {
 
        q, err := queue.NewChannelUniqueQueue(func(data ...queue.Data) {
                for _, datum := range data {
-                       prID := datum.(string)
-                       id := com.StrTo(prID).MustInt64()
+                       id, _ := strconv.ParseInt(datum.(string), 10, 64)
                        idChan <- id
                }
        }, queue.ChannelUniqueQueueConfiguration{
index 99db0784200586ec58a58aea6802104e38c2af0d..476c5dad54ddb2534c002c472787393f44ad20e5 100644 (file)
@@ -21,8 +21,6 @@ import (
        "code.gitea.io/gitea/modules/notification"
        "code.gitea.io/gitea/modules/setting"
        issue_service "code.gitea.io/gitea/services/issue"
-
-       "github.com/unknwon/com"
 )
 
 // NewPullRequest creates new pull request with labels for repository.
@@ -326,7 +324,7 @@ func checkIfPRContentChanged(pr *models.PullRequest, oldCommitID, newCommitID st
        defer headGitRepo.Close()
 
        // Add a temporary remote.
-       tmpRemote := "checkIfPRContentChanged-" + com.ToStr(time.Now().UnixNano())
+       tmpRemote := "checkIfPRContentChanged-" + fmt.Sprint(time.Now().UnixNano())
        if err = headGitRepo.AddRemote(tmpRemote, pr.BaseRepo.RepoPath(), true); err != nil {
                return false, fmt.Errorf("AddRemote: %s/%s-%s: %v", pr.HeadRepo.OwnerName, pr.HeadRepo.Name, tmpRemote, err)
        }
index d34c812b869731a35802c6ab5d1bb427a6c17cf9..e2416cf8deb31112dda9c33c104ec54df6a293e3 100644 (file)
@@ -10,8 +10,6 @@ import (
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/notification"
        "code.gitea.io/gitea/modules/sync"
-
-       "github.com/unknwon/com"
 )
 
 // repoWorkingPool represents a working pool to order the parallel changes to the same repository
@@ -30,12 +28,12 @@ func TransferOwnership(doer, newOwner *models.User, repo *models.Repository, tea
 
        oldOwner := repo.Owner
 
-       repoWorkingPool.CheckIn(com.ToStr(repo.ID))
+       repoWorkingPool.CheckIn(fmt.Sprint(repo.ID))
        if err := models.TransferOwnership(doer, newOwner.Name, repo); err != nil {
-               repoWorkingPool.CheckOut(com.ToStr(repo.ID))
+               repoWorkingPool.CheckOut(fmt.Sprint(repo.ID))
                return err
        }
-       repoWorkingPool.CheckOut(com.ToStr(repo.ID))
+       repoWorkingPool.CheckOut(fmt.Sprint(repo.ID))
 
        newRepo, err := models.GetRepositoryByID(repo.ID)
        if err != nil {
@@ -61,12 +59,12 @@ func ChangeRepositoryName(doer *models.User, repo *models.Repository, newRepoNam
        // repo so that we can atomically rename the repo path and updates the
        // local copy's origin accordingly.
 
-       repoWorkingPool.CheckIn(com.ToStr(repo.ID))
+       repoWorkingPool.CheckIn(fmt.Sprint(repo.ID))
        if err := models.ChangeRepositoryName(doer, repo, newRepoName); err != nil {
-               repoWorkingPool.CheckOut(com.ToStr(repo.ID))
+               repoWorkingPool.CheckOut(fmt.Sprint(repo.ID))
                return err
        }
-       repoWorkingPool.CheckOut(com.ToStr(repo.ID))
+       repoWorkingPool.CheckOut(fmt.Sprint(repo.ID))
 
        notification.NotifyRenameRepository(doer, repo, oldRepoName)
 
index 9468e1ced2972779d7924369e6f64c1a1a2bc0dd..052b8c9954285bb18a310ad8fd823044ca0d128b 100644 (file)
@@ -11,9 +11,9 @@ import (
        "code.gitea.io/gitea/models"
        "code.gitea.io/gitea/modules/notification"
        "code.gitea.io/gitea/modules/notification/action"
+       "code.gitea.io/gitea/modules/util"
 
        "github.com/stretchr/testify/assert"
-       "github.com/unknwon/com"
 )
 
 var notifySync sync.Once
@@ -37,8 +37,12 @@ func TestTransferOwnership(t *testing.T) {
        transferredRepo := models.AssertExistsAndLoadBean(t, &models.Repository{ID: 3}).(*models.Repository)
        assert.EqualValues(t, 2, transferredRepo.OwnerID)
 
-       assert.False(t, com.IsExist(models.RepoPath("user3", "repo3")))
-       assert.True(t, com.IsExist(models.RepoPath("user2", "repo3")))
+       exist, err := util.IsExist(models.RepoPath("user3", "repo3"))
+       assert.NoError(t, err)
+       assert.False(t, exist)
+       exist, err = util.IsExist(models.RepoPath("user2", "repo3"))
+       assert.NoError(t, err)
+       assert.True(t, exist)
        models.AssertExistsAndLoadBean(t, &models.Action{
                OpType:    models.ActionTransferRepo,
                ActUserID: 2,
index 5b6c38f148e9746e080bdec5f2cddf3fb948114e..44c1a18b6c8af6983821b831c42ba90ad5e4d036 100644 (file)
@@ -12,6 +12,7 @@ import (
        "net"
        "net/http"
        "net/url"
+       "strconv"
        "strings"
        "sync"
        "time"
@@ -21,7 +22,6 @@ import (
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
        "github.com/gobwas/glob"
-       "github.com/unknwon/com"
 )
 
 // Deliver deliver hook task
@@ -201,7 +201,7 @@ func DeliverHooks(ctx context.Context) {
                        log.Trace("DeliverHooks [repo_id: %v]", repoIDStr)
                        hookQueue.Remove(repoIDStr)
 
-                       repoID, err := com.StrTo(repoIDStr).Int64()
+                       repoID, err := strconv.ParseInt(repoIDStr, 10, 64)
                        if err != nil {
                                log.Error("Invalid repo ID: %s", repoIDStr)
                                continue
index 67ba1abd0f50ecf4681fa62399cd02ba85e011b4..75b9d1d1f574bd4b66664224618156bea016fb37 100644 (file)
@@ -17,8 +17,6 @@ import (
        repo_module "code.gitea.io/gitea/modules/repository"
        "code.gitea.io/gitea/modules/sync"
        "code.gitea.io/gitea/modules/util"
-
-       "github.com/unknwon/com"
 )
 
 var (
@@ -88,8 +86,8 @@ func updateWikiPage(doer *models.User, repo *models.Repository, oldWikiName, new
        if err = nameAllowed(newWikiName); err != nil {
                return err
        }
-       wikiWorkingPool.CheckIn(com.ToStr(repo.ID))
-       defer wikiWorkingPool.CheckOut(com.ToStr(repo.ID))
+       wikiWorkingPool.CheckIn(fmt.Sprint(repo.ID))
+       defer wikiWorkingPool.CheckOut(fmt.Sprint(repo.ID))
 
        if err = InitWiki(repo); err != nil {
                return fmt.Errorf("InitWiki: %v", err)
@@ -242,8 +240,8 @@ func EditWikiPage(doer *models.User, repo *models.Repository, oldWikiName, newWi
 
 // DeleteWikiPage deletes a wiki page identified by its path.
 func DeleteWikiPage(doer *models.User, repo *models.Repository, wikiName string) (err error) {
-       wikiWorkingPool.CheckIn(com.ToStr(repo.ID))
-       defer wikiWorkingPool.CheckOut(com.ToStr(repo.ID))
+       wikiWorkingPool.CheckIn(fmt.Sprint(repo.ID))
+       defer wikiWorkingPool.CheckOut(fmt.Sprint(repo.ID))
 
        if err = InitWiki(repo); err != nil {
                return fmt.Errorf("InitWiki: %v", err)