mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Use ErrInvalidArgument in packages (#22268)
Related to https://github.com/go-gitea/gitea/pull/22262#discussion_r1059010774 Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: Lauris BH <lauris@nix.lv>
This commit is contained in:
		@@ -5,7 +5,6 @@ package asymkey
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -59,9 +58,9 @@ func calcFingerprintSSHKeygen(publicKeyContent string) (string, error) {
 | 
				
			|||||||
		if strings.Contains(stderr, "is not a public key file") {
 | 
							if strings.Contains(stderr, "is not a public key file") {
 | 
				
			||||||
			return "", ErrKeyUnableVerify{stderr}
 | 
								return "", ErrKeyUnableVerify{stderr}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return "", fmt.Errorf("'ssh-keygen -lf %s' failed with error '%s': %s", tmpPath, err, stderr)
 | 
							return "", util.NewInvalidArgumentErrorf("'ssh-keygen -lf %s' failed with error '%s': %s", tmpPath, err, stderr)
 | 
				
			||||||
	} else if len(stdout) < 2 {
 | 
						} else if len(stdout) < 2 {
 | 
				
			||||||
		return "", errors.New("not enough output for calculating fingerprint: " + stdout)
 | 
							return "", util.NewInvalidArgumentErrorf("not enough output for calculating fingerprint: %s", stdout)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return strings.Split(stdout, " ")[1], nil
 | 
						return strings.Split(stdout, " ")[1], nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,6 @@ import (
 | 
				
			|||||||
	"encoding/base64"
 | 
						"encoding/base64"
 | 
				
			||||||
	"encoding/binary"
 | 
						"encoding/binary"
 | 
				
			||||||
	"encoding/pem"
 | 
						"encoding/pem"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"math/big"
 | 
						"math/big"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
@@ -122,7 +121,7 @@ func parseKeyString(content string) (string, error) {
 | 
				
			|||||||
		parts := strings.SplitN(content, " ", 3)
 | 
							parts := strings.SplitN(content, " ", 3)
 | 
				
			||||||
		switch len(parts) {
 | 
							switch len(parts) {
 | 
				
			||||||
		case 0:
 | 
							case 0:
 | 
				
			||||||
			return "", errors.New("empty key")
 | 
								return "", util.NewInvalidArgumentErrorf("empty key")
 | 
				
			||||||
		case 1:
 | 
							case 1:
 | 
				
			||||||
			keyContent = parts[0]
 | 
								keyContent = parts[0]
 | 
				
			||||||
		case 2:
 | 
							case 2:
 | 
				
			||||||
@@ -167,7 +166,7 @@ func CheckPublicKeyString(content string) (_ string, err error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	content = strings.TrimRight(content, "\n\r")
 | 
						content = strings.TrimRight(content, "\n\r")
 | 
				
			||||||
	if strings.ContainsAny(content, "\n\r") {
 | 
						if strings.ContainsAny(content, "\n\r") {
 | 
				
			||||||
		return "", errors.New("only a single line with a single key please")
 | 
							return "", util.NewInvalidArgumentErrorf("only a single line with a single key please")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// remove any unnecessary whitespace now
 | 
						// remove any unnecessary whitespace now
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,6 @@
 | 
				
			|||||||
package asymkey
 | 
					package asymkey
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -12,6 +11,7 @@ import (
 | 
				
			|||||||
	"code.gitea.io/gitea/models/perm"
 | 
						"code.gitea.io/gitea/models/perm"
 | 
				
			||||||
	user_model "code.gitea.io/gitea/models/user"
 | 
						user_model "code.gitea.io/gitea/models/user"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/setting"
 | 
						"code.gitea.io/gitea/modules/setting"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// __________       .__              .__             .__
 | 
					// __________       .__              .__             .__
 | 
				
			||||||
@@ -70,7 +70,7 @@ func CheckPrincipalKeyString(user *user_model.User, content string) (_ string, e
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	content = strings.TrimSpace(content)
 | 
						content = strings.TrimSpace(content)
 | 
				
			||||||
	if strings.ContainsAny(content, "\r\n") {
 | 
						if strings.ContainsAny(content, "\r\n") {
 | 
				
			||||||
		return "", errors.New("only a single line with a single principal please")
 | 
							return "", util.NewInvalidArgumentErrorf("only a single line with a single principal please")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// check all the allowed principals, email, username or anything
 | 
						// check all the allowed principals, email, username or anything
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,6 @@ package models
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -235,7 +234,7 @@ func RemoveRepository(t *organization.Team, repoID int64) error {
 | 
				
			|||||||
// It's caller's responsibility to assign organization ID.
 | 
					// It's caller's responsibility to assign organization ID.
 | 
				
			||||||
func NewTeam(t *organization.Team) (err error) {
 | 
					func NewTeam(t *organization.Team) (err error) {
 | 
				
			||||||
	if len(t.Name) == 0 {
 | 
						if len(t.Name) == 0 {
 | 
				
			||||||
		return errors.New("empty team name")
 | 
							return util.NewInvalidArgumentErrorf("empty team name")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if err = organization.IsUsableTeamName(t.Name); err != nil {
 | 
						if err = organization.IsUsableTeamName(t.Name); err != nil {
 | 
				
			||||||
@@ -300,7 +299,7 @@ func NewTeam(t *organization.Team) (err error) {
 | 
				
			|||||||
// UpdateTeam updates information of team.
 | 
					// UpdateTeam updates information of team.
 | 
				
			||||||
func UpdateTeam(t *organization.Team, authChanged, includeAllChanged bool) (err error) {
 | 
					func UpdateTeam(t *organization.Team, authChanged, includeAllChanged bool) (err error) {
 | 
				
			||||||
	if len(t.Name) == 0 {
 | 
						if len(t.Name) == 0 {
 | 
				
			||||||
		return errors.New("empty team name")
 | 
							return util.NewInvalidArgumentErrorf("empty team name")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(t.Description) > 255 {
 | 
						if len(t.Description) > 255 {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,6 @@ package conan
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -13,13 +12,14 @@ import (
 | 
				
			|||||||
	"code.gitea.io/gitea/models/packages"
 | 
						"code.gitea.io/gitea/models/packages"
 | 
				
			||||||
	conan_module "code.gitea.io/gitea/modules/packages/conan"
 | 
						conan_module "code.gitea.io/gitea/modules/packages/conan"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/timeutil"
 | 
						"code.gitea.io/gitea/modules/timeutil"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"xorm.io/builder"
 | 
						"xorm.io/builder"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	ErrRecipeReferenceNotExist  = errors.New("Recipe reference does not exist")
 | 
						ErrRecipeReferenceNotExist  = util.NewNotExistErrorf("recipe reference does not exist")
 | 
				
			||||||
	ErrPackageReferenceNotExist = errors.New("Package reference does not exist")
 | 
						ErrPackageReferenceNotExist = util.NewNotExistErrorf("package reference does not exist")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// RecipeExists checks if a recipe exists
 | 
					// RecipeExists checks if a recipe exists
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,6 @@ package container
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -13,11 +12,12 @@ import (
 | 
				
			|||||||
	"code.gitea.io/gitea/models/packages"
 | 
						"code.gitea.io/gitea/models/packages"
 | 
				
			||||||
	user_model "code.gitea.io/gitea/models/user"
 | 
						user_model "code.gitea.io/gitea/models/user"
 | 
				
			||||||
	container_module "code.gitea.io/gitea/modules/packages/container"
 | 
						container_module "code.gitea.io/gitea/modules/packages/container"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"xorm.io/builder"
 | 
						"xorm.io/builder"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var ErrContainerBlobNotExist = errors.New("Container blob does not exist")
 | 
					var ErrContainerBlobNotExist = util.NewNotExistErrorf("container blob does not exist")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type BlobSearchOptions struct {
 | 
					type BlobSearchOptions struct {
 | 
				
			||||||
	OwnerID    int64
 | 
						OwnerID    int64
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,11 +5,11 @@ package packages
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/models/db"
 | 
						"code.gitea.io/gitea/models/db"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"xorm.io/builder"
 | 
						"xorm.io/builder"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -20,9 +20,9 @@ func init() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// ErrDuplicatePackage indicates a duplicated package error
 | 
						// ErrDuplicatePackage indicates a duplicated package error
 | 
				
			||||||
	ErrDuplicatePackage = errors.New("Package does exist already")
 | 
						ErrDuplicatePackage = util.NewAlreadyExistErrorf("package already exists")
 | 
				
			||||||
	// ErrPackageNotExist indicates a package not exist error
 | 
						// ErrPackageNotExist indicates a package not exist error
 | 
				
			||||||
	ErrPackageNotExist = errors.New("Package does not exist")
 | 
						ErrPackageNotExist = util.NewNotExistErrorf("package does not exist")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Type of a package
 | 
					// Type of a package
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,15 +5,15 @@ package packages
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/models/db"
 | 
						"code.gitea.io/gitea/models/db"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/timeutil"
 | 
						"code.gitea.io/gitea/modules/timeutil"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ErrPackageBlobNotExist indicates a package blob not exist error
 | 
					// ErrPackageBlobNotExist indicates a package blob not exist error
 | 
				
			||||||
var ErrPackageBlobNotExist = errors.New("Package blob does not exist")
 | 
					var ErrPackageBlobNotExist = util.NewNotExistErrorf("package blob does not exist")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	db.RegisterModel(new(PackageBlob))
 | 
						db.RegisterModel(new(PackageBlob))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,6 @@ package packages
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -15,7 +14,7 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ErrPackageBlobUploadNotExist indicates a package blob upload not exist error
 | 
					// ErrPackageBlobUploadNotExist indicates a package blob upload not exist error
 | 
				
			||||||
var ErrPackageBlobUploadNotExist = errors.New("Package blob upload does not exist")
 | 
					var ErrPackageBlobUploadNotExist = util.NewNotExistErrorf("package blob upload does not exist")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	db.RegisterModel(new(PackageBlobUpload))
 | 
						db.RegisterModel(new(PackageBlobUpload))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,17 +5,17 @@ package packages
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/models/db"
 | 
						"code.gitea.io/gitea/models/db"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/timeutil"
 | 
						"code.gitea.io/gitea/modules/timeutil"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"xorm.io/builder"
 | 
						"xorm.io/builder"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var ErrPackageCleanupRuleNotExist = errors.New("Package blob does not exist")
 | 
					var ErrPackageCleanupRuleNotExist = util.NewNotExistErrorf("package blob does not exist")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	db.RegisterModel(new(PackageCleanupRule))
 | 
						db.RegisterModel(new(PackageCleanupRule))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,13 +5,13 @@ package packages
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/models/db"
 | 
						"code.gitea.io/gitea/models/db"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/timeutil"
 | 
						"code.gitea.io/gitea/modules/timeutil"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"xorm.io/builder"
 | 
						"xorm.io/builder"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -22,9 +22,9 @@ func init() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// ErrDuplicatePackageFile indicates a duplicated package file error
 | 
						// ErrDuplicatePackageFile indicates a duplicated package file error
 | 
				
			||||||
	ErrDuplicatePackageFile = errors.New("Package file does exist already")
 | 
						ErrDuplicatePackageFile = util.NewAlreadyExistErrorf("package file already exists")
 | 
				
			||||||
	// ErrPackageFileNotExist indicates a package file not exist error
 | 
						// ErrPackageFileNotExist indicates a package file not exist error
 | 
				
			||||||
	ErrPackageFileNotExist = errors.New("Package file does not exist")
 | 
						ErrPackageFileNotExist = util.NewNotExistErrorf("package file does not exist")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// EmptyFileKey is a named constant for an empty file key
 | 
					// EmptyFileKey is a named constant for an empty file key
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,6 @@ package packages
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -17,7 +16,7 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ErrDuplicatePackageVersion indicates a duplicated package version error
 | 
					// ErrDuplicatePackageVersion indicates a duplicated package version error
 | 
				
			||||||
var ErrDuplicatePackageVersion = errors.New("Package version already exists")
 | 
					var ErrDuplicatePackageVersion = util.NewAlreadyExistErrorf("package version already exists")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	db.RegisterModel(new(PackageVersion))
 | 
						db.RegisterModel(new(PackageVersion))
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,6 @@ package project
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/models/db"
 | 
						"code.gitea.io/gitea/models/db"
 | 
				
			||||||
@@ -176,7 +175,7 @@ func NewProject(p *Project) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if !IsTypeValid(p.Type) {
 | 
						if !IsTypeValid(p.Type) {
 | 
				
			||||||
		return errors.New("project type is not valid")
 | 
							return util.NewInvalidArgumentErrorf("project type is not valid")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ctx, committer, err := db.TxContext(db.DefaultContext)
 | 
						ctx, committer, err := db.TxContext(db.DefaultContext)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,16 +6,16 @@ package repo
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/models/db"
 | 
						"code.gitea.io/gitea/models/db"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/log"
 | 
						"code.gitea.io/gitea/modules/log"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/timeutil"
 | 
						"code.gitea.io/gitea/modules/timeutil"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ErrMirrorNotExist mirror does not exist error
 | 
					// ErrMirrorNotExist mirror does not exist error
 | 
				
			||||||
var ErrMirrorNotExist = errors.New("Mirror does not exist")
 | 
					var ErrMirrorNotExist = util.NewNotExistErrorf("Mirror does not exist")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Mirror represents mirror information of a repository.
 | 
					// Mirror represents mirror information of a repository.
 | 
				
			||||||
type Mirror struct {
 | 
					type Mirror struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,18 +5,18 @@ package repo
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/models/db"
 | 
						"code.gitea.io/gitea/models/db"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/log"
 | 
						"code.gitea.io/gitea/modules/log"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/timeutil"
 | 
						"code.gitea.io/gitea/modules/timeutil"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"xorm.io/builder"
 | 
						"xorm.io/builder"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ErrPushMirrorNotExist mirror does not exist error
 | 
					// ErrPushMirrorNotExist mirror does not exist error
 | 
				
			||||||
var ErrPushMirrorNotExist = errors.New("PushMirror does not exist")
 | 
					var ErrPushMirrorNotExist = util.NewNotExistErrorf("PushMirror does not exist")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// PushMirror represents mirror information of a repository.
 | 
					// PushMirror represents mirror information of a repository.
 | 
				
			||||||
type PushMirror struct {
 | 
					type PushMirror struct {
 | 
				
			||||||
@@ -90,7 +90,7 @@ func DeletePushMirrors(ctx context.Context, opts PushMirrorOptions) error {
 | 
				
			|||||||
		_, err := db.GetEngine(ctx).Where(opts.toConds()).Delete(&PushMirror{})
 | 
							_, err := db.GetEngine(ctx).Where(opts.toConds()).Delete(&PushMirror{})
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return errors.New("repoID required and must be set")
 | 
						return util.NewInvalidArgumentErrorf("repoID required and must be set")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func GetPushMirror(ctx context.Context, opts PushMirrorOptions) (*PushMirror, error) {
 | 
					func GetPushMirror(ctx context.Context, opts PushMirrorOptions) (*PushMirror, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,6 @@ package repo
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"sort"
 | 
						"sort"
 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
@@ -156,7 +155,7 @@ func AddReleaseAttachments(ctx context.Context, releaseID int64, attachmentUUIDs
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	for i := range attachments {
 | 
						for i := range attachments {
 | 
				
			||||||
		if attachments[i].ReleaseID != 0 {
 | 
							if attachments[i].ReleaseID != 0 {
 | 
				
			||||||
			return errors.New("release permission denied")
 | 
								return util.NewPermissionDeniedErrorf("release permission denied")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		attachments[i].ReleaseID = releaseID
 | 
							attachments[i].ReleaseID = releaseID
 | 
				
			||||||
		// No assign value could be 0, so ignore AllCols().
 | 
							// No assign value could be 0, so ignore AllCols().
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,6 @@ package repo
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -708,7 +707,7 @@ func GetUserRepositories(opts *SearchRepoOptions) (RepositoryList, int64, error)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	cond := builder.NewCond()
 | 
						cond := builder.NewCond()
 | 
				
			||||||
	if opts.Actor == nil {
 | 
						if opts.Actor == nil {
 | 
				
			||||||
		return nil, 0, errors.New("GetUserRepositories: Actor is needed but not given")
 | 
							return nil, 0, util.NewInvalidArgumentErrorf("GetUserRepositories: Actor is needed but not given")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	cond = cond.And(builder.Eq{"owner_id": opts.Actor.ID})
 | 
						cond = cond.And(builder.Eq{"owner_id": opts.Actor.ID})
 | 
				
			||||||
	if !opts.Private {
 | 
						if !opts.Private {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,7 +64,7 @@ func Copy(src, dest string) error {
 | 
				
			|||||||
func CopyDir(srcPath, destPath string, filters ...func(filePath string) bool) error {
 | 
					func CopyDir(srcPath, destPath string, filters ...func(filePath string) bool) error {
 | 
				
			||||||
	// Check if target directory exists.
 | 
						// Check if target directory exists.
 | 
				
			||||||
	if _, err := os.Stat(destPath); !errors.Is(err, os.ErrNotExist) {
 | 
						if _, err := os.Stat(destPath); !errors.Is(err, os.ErrNotExist) {
 | 
				
			||||||
		return errors.New("file or directory already exists: " + destPath)
 | 
							return util.NewAlreadyExistErrorf("file or directory already exists: %s", destPath)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err := os.MkdirAll(destPath, os.ModePerm)
 | 
						err := os.MkdirAll(destPath, os.ModePerm)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,6 @@ package user
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"net/mail"
 | 
						"net/mail"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
@@ -22,7 +21,7 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ErrEmailNotActivated e-mail address has not been activated error
 | 
					// ErrEmailNotActivated e-mail address has not been activated error
 | 
				
			||||||
var ErrEmailNotActivated = errors.New("e-mail address has not been activated")
 | 
					var ErrEmailNotActivated = util.NewInvalidArgumentErrorf("e-mail address has not been activated")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ErrEmailCharIsNotSupported e-mail address contains unsupported character
 | 
					// ErrEmailCharIsNotSupported e-mail address contains unsupported character
 | 
				
			||||||
type ErrEmailCharIsNotSupported struct {
 | 
					type ErrEmailCharIsNotSupported struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,6 @@ package user
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/models/db"
 | 
						"code.gitea.io/gitea/models/db"
 | 
				
			||||||
@@ -13,7 +12,7 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ErrOpenIDNotExist openid is not known
 | 
					// ErrOpenIDNotExist openid is not known
 | 
				
			||||||
var ErrOpenIDNotExist = errors.New("OpenID is unknown")
 | 
					var ErrOpenIDNotExist = util.NewNotExistErrorf("OpenID is unknown")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// UserOpenID is the list of all OpenID identities of a user.
 | 
					// UserOpenID is the list of all OpenID identities of a user.
 | 
				
			||||||
// Since this is a middle table, name it OpenID is not suitable, so we ignore the lint here
 | 
					// Since this is a middle table, name it OpenID is not suitable, so we ignore the lint here
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,12 +5,12 @@ package composer
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"archive/zip"
 | 
						"archive/zip"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/modules/json"
 | 
						"code.gitea.io/gitea/modules/json"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/validation"
 | 
						"code.gitea.io/gitea/modules/validation"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/hashicorp/go-version"
 | 
						"github.com/hashicorp/go-version"
 | 
				
			||||||
@@ -21,11 +21,11 @@ const TypeProperty = "composer.type"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// ErrMissingComposerFile indicates a missing composer.json file
 | 
						// ErrMissingComposerFile indicates a missing composer.json file
 | 
				
			||||||
	ErrMissingComposerFile = errors.New("composer.json file is missing")
 | 
						ErrMissingComposerFile = util.NewInvalidArgumentErrorf("composer.json file is missing")
 | 
				
			||||||
	// ErrInvalidName indicates an invalid package name
 | 
						// ErrInvalidName indicates an invalid package name
 | 
				
			||||||
	ErrInvalidName = errors.New("package name is invalid")
 | 
						ErrInvalidName = util.NewInvalidArgumentErrorf("package name is invalid")
 | 
				
			||||||
	// ErrInvalidVersion indicates an invalid package version
 | 
						// ErrInvalidVersion indicates an invalid package version
 | 
				
			||||||
	ErrInvalidVersion = errors.New("package version is invalid")
 | 
						ErrInvalidVersion = util.NewInvalidArgumentErrorf("package version is invalid")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Package represents a Composer package
 | 
					// Package represents a Composer package
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,9 +5,10 @@ package conan
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"bufio"
 | 
						"bufio"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Conaninfo represents infos of a Conan package
 | 
					// Conaninfo represents infos of a Conan package
 | 
				
			||||||
@@ -79,7 +80,7 @@ func readSections(r io.Reader) (map[string][]string, error) {
 | 
				
			|||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if line != "" {
 | 
							if line != "" {
 | 
				
			||||||
			return nil, errors.New("Invalid conaninfo.txt")
 | 
								return nil, util.NewInvalidArgumentErrorf("invalid conaninfo.txt")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if err := scanner.Err(); err != nil {
 | 
						if err := scanner.Err(); err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,12 +4,12 @@
 | 
				
			|||||||
package conan
 | 
					package conan
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/modules/log"
 | 
						"code.gitea.io/gitea/modules/log"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
@@ -25,7 +25,7 @@ var (
 | 
				
			|||||||
	namePattern     = regexp.MustCompile(fmt.Sprintf(`^[a-zA-Z0-9_][a-zA-Z0-9_\+\.-]{%d,%d}$`, minChars-1, maxChars-1))
 | 
						namePattern     = regexp.MustCompile(fmt.Sprintf(`^[a-zA-Z0-9_][a-zA-Z0-9_\+\.-]{%d,%d}$`, minChars-1, maxChars-1))
 | 
				
			||||||
	revisionPattern = regexp.MustCompile(fmt.Sprintf(`^[a-zA-Z0-9]{1,%d}$`, maxChars))
 | 
						revisionPattern = regexp.MustCompile(fmt.Sprintf(`^[a-zA-Z0-9]{1,%d}$`, maxChars))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ErrValidation = errors.New("Could not validate one or more reference fields")
 | 
						ErrValidation = util.NewInvalidArgumentErrorf("could not validate one or more reference fields")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// RecipeReference represents a recipe <Name>/<Version>@<User>/<Channel>#<Revision>
 | 
					// RecipeReference represents a recipe <Name>/<Version>@<User>/<Channel>#<Revision>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,10 +6,10 @@ package helm
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"archive/tar"
 | 
						"archive/tar"
 | 
				
			||||||
	"compress/gzip"
 | 
						"compress/gzip"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/validation"
 | 
						"code.gitea.io/gitea/modules/validation"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/hashicorp/go-version"
 | 
						"github.com/hashicorp/go-version"
 | 
				
			||||||
@@ -18,13 +18,13 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// ErrMissingChartFile indicates a missing Chart.yaml file
 | 
						// ErrMissingChartFile indicates a missing Chart.yaml file
 | 
				
			||||||
	ErrMissingChartFile = errors.New("Chart.yaml file is missing")
 | 
						ErrMissingChartFile = util.NewInvalidArgumentErrorf("Chart.yaml file is missing")
 | 
				
			||||||
	// ErrInvalidName indicates an invalid package name
 | 
						// ErrInvalidName indicates an invalid package name
 | 
				
			||||||
	ErrInvalidName = errors.New("package name is invalid")
 | 
						ErrInvalidName = util.NewInvalidArgumentErrorf("package name is invalid")
 | 
				
			||||||
	// ErrInvalidVersion indicates an invalid package version
 | 
						// ErrInvalidVersion indicates an invalid package version
 | 
				
			||||||
	ErrInvalidVersion = errors.New("package version is invalid")
 | 
						ErrInvalidVersion = util.NewInvalidArgumentErrorf("package version is invalid")
 | 
				
			||||||
	// ErrInvalidChart indicates an invalid chart
 | 
						// ErrInvalidChart indicates an invalid chart
 | 
				
			||||||
	ErrInvalidChart = errors.New("chart is invalid")
 | 
						ErrInvalidChart = util.NewInvalidArgumentErrorf("chart is invalid")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Metadata for a Chart file. This models the structure of a Chart.yaml file.
 | 
					// Metadata for a Chart file. This models the structure of a Chart.yaml file.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,6 @@ import (
 | 
				
			|||||||
	"crypto/sha1"
 | 
						"crypto/sha1"
 | 
				
			||||||
	"crypto/sha512"
 | 
						"crypto/sha512"
 | 
				
			||||||
	"encoding/base64"
 | 
						"encoding/base64"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
@@ -16,6 +15,7 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/modules/json"
 | 
						"code.gitea.io/gitea/modules/json"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/validation"
 | 
						"code.gitea.io/gitea/modules/validation"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/hashicorp/go-version"
 | 
						"github.com/hashicorp/go-version"
 | 
				
			||||||
@@ -23,15 +23,15 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// ErrInvalidPackage indicates an invalid package
 | 
						// ErrInvalidPackage indicates an invalid package
 | 
				
			||||||
	ErrInvalidPackage = errors.New("The package is invalid")
 | 
						ErrInvalidPackage = util.NewInvalidArgumentErrorf("package is invalid")
 | 
				
			||||||
	// ErrInvalidPackageName indicates an invalid name
 | 
						// ErrInvalidPackageName indicates an invalid name
 | 
				
			||||||
	ErrInvalidPackageName = errors.New("The package name is invalid")
 | 
						ErrInvalidPackageName = util.NewInvalidArgumentErrorf("package name is invalid")
 | 
				
			||||||
	// ErrInvalidPackageVersion indicates an invalid version
 | 
						// ErrInvalidPackageVersion indicates an invalid version
 | 
				
			||||||
	ErrInvalidPackageVersion = errors.New("The package version is invalid")
 | 
						ErrInvalidPackageVersion = util.NewInvalidArgumentErrorf("package version is invalid")
 | 
				
			||||||
	// ErrInvalidAttachment indicates a invalid attachment
 | 
						// ErrInvalidAttachment indicates a invalid attachment
 | 
				
			||||||
	ErrInvalidAttachment = errors.New("The package attachment is invalid")
 | 
						ErrInvalidAttachment = util.NewInvalidArgumentErrorf("package attachment is invalid")
 | 
				
			||||||
	// ErrInvalidIntegrity indicates an integrity validation error
 | 
						// ErrInvalidIntegrity indicates an integrity validation error
 | 
				
			||||||
	ErrInvalidIntegrity = errors.New("Failed to validate integrity")
 | 
						ErrInvalidIntegrity = util.NewInvalidArgumentErrorf("failed to validate integrity")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var nameMatch = regexp.MustCompile(`\A((@[^\s\/~'!\(\)\*]+?)[\/])?([^_.][^\s\/~'!\(\)\*]+)\z`)
 | 
					var nameMatch = regexp.MustCompile(`\A((@[^\s\/~'!\(\)\*]+?)[\/])?([^_.][^\s\/~'!\(\)\*]+)\z`)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,13 +7,13 @@ import (
 | 
				
			|||||||
	"archive/zip"
 | 
						"archive/zip"
 | 
				
			||||||
	"bytes"
 | 
						"bytes"
 | 
				
			||||||
	"encoding/xml"
 | 
						"encoding/xml"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"path/filepath"
 | 
						"path/filepath"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/validation"
 | 
						"code.gitea.io/gitea/modules/validation"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/hashicorp/go-version"
 | 
						"github.com/hashicorp/go-version"
 | 
				
			||||||
@@ -21,13 +21,13 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// ErrMissingNuspecFile indicates a missing Nuspec file
 | 
						// ErrMissingNuspecFile indicates a missing Nuspec file
 | 
				
			||||||
	ErrMissingNuspecFile = errors.New("Nuspec file is missing")
 | 
						ErrMissingNuspecFile = util.NewInvalidArgumentErrorf("Nuspec file is missing")
 | 
				
			||||||
	// ErrNuspecFileTooLarge indicates a Nuspec file which is too large
 | 
						// ErrNuspecFileTooLarge indicates a Nuspec file which is too large
 | 
				
			||||||
	ErrNuspecFileTooLarge = errors.New("Nuspec file is too large")
 | 
						ErrNuspecFileTooLarge = util.NewInvalidArgumentErrorf("Nuspec file is too large")
 | 
				
			||||||
	// ErrNuspecInvalidID indicates an invalid id in the Nuspec file
 | 
						// ErrNuspecInvalidID indicates an invalid id in the Nuspec file
 | 
				
			||||||
	ErrNuspecInvalidID = errors.New("Nuspec file contains an invalid id")
 | 
						ErrNuspecInvalidID = util.NewInvalidArgumentErrorf("Nuspec file contains an invalid id")
 | 
				
			||||||
	// ErrNuspecInvalidVersion indicates an invalid version in the Nuspec file
 | 
						// ErrNuspecInvalidVersion indicates an invalid version in the Nuspec file
 | 
				
			||||||
	ErrNuspecInvalidVersion = errors.New("Nuspec file contains an invalid version")
 | 
						ErrNuspecInvalidVersion = util.NewInvalidArgumentErrorf("Nuspec file contains an invalid version")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// PackageType specifies the package type the metadata describes
 | 
					// PackageType specifies the package type the metadata describes
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,6 @@ import (
 | 
				
			|||||||
	"archive/zip"
 | 
						"archive/zip"
 | 
				
			||||||
	"bytes"
 | 
						"bytes"
 | 
				
			||||||
	"encoding/binary"
 | 
						"encoding/binary"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"path"
 | 
						"path"
 | 
				
			||||||
@@ -15,13 +14,14 @@ import (
 | 
				
			|||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/modules/packages"
 | 
						"code.gitea.io/gitea/modules/packages"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	ErrMissingPdbFiles       = errors.New("Package does not contain PDB files")
 | 
						ErrMissingPdbFiles       = util.NewInvalidArgumentErrorf("package does not contain PDB files")
 | 
				
			||||||
	ErrInvalidFiles          = errors.New("Package contains invalid files")
 | 
						ErrInvalidFiles          = util.NewInvalidArgumentErrorf("package contains invalid files")
 | 
				
			||||||
	ErrInvalidPdbMagicNumber = errors.New("Invalid Portable PDB magic number")
 | 
						ErrInvalidPdbMagicNumber = util.NewInvalidArgumentErrorf("invalid Portable PDB magic number")
 | 
				
			||||||
	ErrMissingPdbStream      = errors.New("Missing PDB stream")
 | 
						ErrMissingPdbStream      = util.NewInvalidArgumentErrorf("missing PDB stream")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type PortablePdb struct {
 | 
					type PortablePdb struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,11 +6,11 @@ package pub
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"archive/tar"
 | 
						"archive/tar"
 | 
				
			||||||
	"compress/gzip"
 | 
						"compress/gzip"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/validation"
 | 
						"code.gitea.io/gitea/modules/validation"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/hashicorp/go-version"
 | 
						"github.com/hashicorp/go-version"
 | 
				
			||||||
@@ -18,10 +18,10 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	ErrMissingPubspecFile  = errors.New("Pubspec file is missing")
 | 
						ErrMissingPubspecFile  = util.NewInvalidArgumentErrorf("Pubspec file is missing")
 | 
				
			||||||
	ErrPubspecFileTooLarge = errors.New("Pubspec file is too large")
 | 
						ErrPubspecFileTooLarge = util.NewInvalidArgumentErrorf("Pubspec file is too large")
 | 
				
			||||||
	ErrInvalidName         = errors.New("Package name is invalid")
 | 
						ErrInvalidName         = util.NewInvalidArgumentErrorf("package name is invalid")
 | 
				
			||||||
	ErrInvalidVersion      = errors.New("Package version is invalid")
 | 
						ErrInvalidVersion      = util.NewInvalidArgumentErrorf("package version is invalid")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var namePattern = regexp.MustCompile(`\A[a-zA-Z_][a-zA-Z0-9_]*\z`)
 | 
					var namePattern = regexp.MustCompile(`\A[a-zA-Z_][a-zA-Z0-9_]*\z`)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,9 +6,10 @@ package rubygems
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"bufio"
 | 
						"bufio"
 | 
				
			||||||
	"bytes"
 | 
						"bytes"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"reflect"
 | 
						"reflect"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
@@ -31,9 +32,9 @@ const (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// ErrUnsupportedType indicates an unsupported type
 | 
						// ErrUnsupportedType indicates an unsupported type
 | 
				
			||||||
	ErrUnsupportedType = errors.New("Type is unsupported")
 | 
						ErrUnsupportedType = util.NewInvalidArgumentErrorf("type is unsupported")
 | 
				
			||||||
	// ErrInvalidIntRange indicates an invalid number range
 | 
						// ErrInvalidIntRange indicates an invalid number range
 | 
				
			||||||
	ErrInvalidIntRange = errors.New("Number is not in valid range")
 | 
						ErrInvalidIntRange = util.NewInvalidArgumentErrorf("number is not in valid range")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// RubyUserMarshal is a Ruby object that has a marshal_load function.
 | 
					// RubyUserMarshal is a Ruby object that has a marshal_load function.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,11 +6,11 @@ package rubygems
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"archive/tar"
 | 
						"archive/tar"
 | 
				
			||||||
	"compress/gzip"
 | 
						"compress/gzip"
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/validation"
 | 
						"code.gitea.io/gitea/modules/validation"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"gopkg.in/yaml.v3"
 | 
						"gopkg.in/yaml.v3"
 | 
				
			||||||
@@ -18,11 +18,11 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var (
 | 
					var (
 | 
				
			||||||
	// ErrMissingMetadataFile indicates a missing metadata.gz file
 | 
						// ErrMissingMetadataFile indicates a missing metadata.gz file
 | 
				
			||||||
	ErrMissingMetadataFile = errors.New("Metadata file is missing")
 | 
						ErrMissingMetadataFile = util.NewInvalidArgumentErrorf("metadata.gz file is missing")
 | 
				
			||||||
	// ErrInvalidName indicates an invalid id in the metadata.gz file
 | 
						// ErrInvalidName indicates an invalid id in the metadata.gz file
 | 
				
			||||||
	ErrInvalidName = errors.New("Metadata file contains an invalid name")
 | 
						ErrInvalidName = util.NewInvalidArgumentErrorf("package name is invalid")
 | 
				
			||||||
	// ErrInvalidVersion indicates an invalid version in the metadata.gz file
 | 
						// ErrInvalidVersion indicates an invalid version in the metadata.gz file
 | 
				
			||||||
	ErrInvalidVersion = errors.New("Metadata file contains an invalid version")
 | 
						ErrInvalidVersion = util.NewInvalidArgumentErrorf("package version is invalid")
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var versionMatcher = regexp.MustCompile(`\A[0-9]+(?:\.[0-9a-zA-Z]+)*(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?\z`)
 | 
					var versionMatcher = regexp.MustCompile(`\A[0-9]+(?:\.[0-9a-zA-Z]+)*(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?\z`)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@ package util
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Common Errors forming the base of our error system
 | 
					// Common Errors forming the base of our error system
 | 
				
			||||||
@@ -34,3 +35,31 @@ func (w SilentWrap) Error() string {
 | 
				
			|||||||
func (w SilentWrap) Unwrap() error {
 | 
					func (w SilentWrap) Unwrap() error {
 | 
				
			||||||
	return w.Err
 | 
						return w.Err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewSilentWrapErrorf returns an error that formats as the given text but unwraps as the provided error
 | 
				
			||||||
 | 
					func NewSilentWrapErrorf(unwrap error, message string, args ...interface{}) error {
 | 
				
			||||||
 | 
						if len(args) == 0 {
 | 
				
			||||||
 | 
							return SilentWrap{Message: message, Err: unwrap}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return SilentWrap{Message: fmt.Sprintf(message, args...), Err: unwrap}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewInvalidArgumentErrorf returns an error that formats as the given text but unwraps as an ErrInvalidArgument
 | 
				
			||||||
 | 
					func NewInvalidArgumentErrorf(message string, args ...interface{}) error {
 | 
				
			||||||
 | 
						return NewSilentWrapErrorf(ErrInvalidArgument, message, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewPermissionDeniedErrorf returns an error that formats as the given text but unwraps as an ErrPermissionDenied
 | 
				
			||||||
 | 
					func NewPermissionDeniedErrorf(message string, args ...interface{}) error {
 | 
				
			||||||
 | 
						return NewSilentWrapErrorf(ErrPermissionDenied, message, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewAlreadyExistErrorf returns an error that formats as the given text but unwraps as an ErrAlreadyExist
 | 
				
			||||||
 | 
					func NewAlreadyExistErrorf(message string, args ...interface{}) error {
 | 
				
			||||||
 | 
						return NewSilentWrapErrorf(ErrAlreadyExist, message, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NewNotExistErrorf returns an error that formats as the given text but unwraps as an ErrNotExist
 | 
				
			||||||
 | 
					func NewNotExistErrorf(message string, args ...interface{}) error {
 | 
				
			||||||
 | 
						return NewSilentWrapErrorf(ErrNotExist, message, args...)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@
 | 
				
			|||||||
package composer
 | 
					package composer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
@@ -200,7 +201,11 @@ func UploadPackage(ctx *context.Context) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	cp, err := composer_module.ParsePackage(buf, buf.Size())
 | 
						cp, err := composer_module.ParsePackage(buf, buf.Size())
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		apiError(ctx, http.StatusBadRequest, err)
 | 
							if errors.Is(err, util.ErrInvalidArgument) {
 | 
				
			||||||
 | 
								apiError(ctx, http.StatusBadRequest, err)
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								apiError(ctx, http.StatusInternalServerError, err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@
 | 
				
			|||||||
package helm
 | 
					package helm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
@@ -163,7 +164,11 @@ func UploadPackage(ctx *context.Context) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	metadata, err := helm_module.ParseChartArchive(buf)
 | 
						metadata, err := helm_module.ParseChartArchive(buf)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		apiError(ctx, http.StatusBadRequest, err)
 | 
							if errors.Is(err, util.ErrInvalidArgument) {
 | 
				
			||||||
 | 
								apiError(ctx, http.StatusBadRequest, err)
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								apiError(ctx, http.StatusInternalServerError, err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -158,7 +158,11 @@ func DownloadPackageFileByName(ctx *context.Context) {
 | 
				
			|||||||
func UploadPackage(ctx *context.Context) {
 | 
					func UploadPackage(ctx *context.Context) {
 | 
				
			||||||
	npmPackage, err := npm_module.ParsePackage(ctx.Req.Body)
 | 
						npmPackage, err := npm_module.ParsePackage(ctx.Req.Body)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		apiError(ctx, http.StatusBadRequest, err)
 | 
							if errors.Is(err, util.ErrInvalidArgument) {
 | 
				
			||||||
 | 
								apiError(ctx, http.StatusBadRequest, err)
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								apiError(ctx, http.StatusInternalServerError, err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -411,7 +411,11 @@ func UploadSymbolPackage(ctx *context.Context) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	pdbs, err := nuget_module.ExtractPortablePdb(buf, buf.Size())
 | 
						pdbs, err := nuget_module.ExtractPortablePdb(buf, buf.Size())
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		apiError(ctx, http.StatusBadRequest, err)
 | 
							if errors.Is(err, util.ErrInvalidArgument) {
 | 
				
			||||||
 | 
								apiError(ctx, http.StatusBadRequest, err)
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								apiError(ctx, http.StatusInternalServerError, err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	defer pdbs.Close()
 | 
						defer pdbs.Close()
 | 
				
			||||||
@@ -507,7 +511,7 @@ func processUploadedFile(ctx *context.Context, expectedType nuget_module.Package
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	np, err := nuget_module.ParsePackageMetaData(buf, buf.Size())
 | 
						np, err := nuget_module.ParsePackageMetaData(buf, buf.Size())
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		if err == nuget_module.ErrMissingNuspecFile || err == nuget_module.ErrNuspecFileTooLarge || err == nuget_module.ErrNuspecInvalidID || err == nuget_module.ErrNuspecInvalidVersion {
 | 
							if errors.Is(err, util.ErrInvalidArgument) {
 | 
				
			||||||
			apiError(ctx, http.StatusBadRequest, err)
 | 
								apiError(ctx, http.StatusBadRequest, err)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			apiError(ctx, http.StatusInternalServerError, err)
 | 
								apiError(ctx, http.StatusInternalServerError, err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@
 | 
				
			|||||||
package pub
 | 
					package pub
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
@@ -19,6 +20,7 @@ import (
 | 
				
			|||||||
	packages_module "code.gitea.io/gitea/modules/packages"
 | 
						packages_module "code.gitea.io/gitea/modules/packages"
 | 
				
			||||||
	pub_module "code.gitea.io/gitea/modules/packages/pub"
 | 
						pub_module "code.gitea.io/gitea/modules/packages/pub"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/setting"
 | 
						"code.gitea.io/gitea/modules/setting"
 | 
				
			||||||
 | 
						"code.gitea.io/gitea/modules/util"
 | 
				
			||||||
	"code.gitea.io/gitea/routers/api/packages/helper"
 | 
						"code.gitea.io/gitea/routers/api/packages/helper"
 | 
				
			||||||
	packages_service "code.gitea.io/gitea/services/packages"
 | 
						packages_service "code.gitea.io/gitea/services/packages"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -173,7 +175,11 @@ func UploadPackageFile(ctx *context.Context) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	pck, err := pub_module.ParsePackage(buf)
 | 
						pck, err := pub_module.ParsePackage(buf)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		apiError(ctx, http.StatusInternalServerError, err)
 | 
							if errors.Is(err, util.ErrInvalidArgument) {
 | 
				
			||||||
 | 
								apiError(ctx, http.StatusBadRequest, err)
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								apiError(ctx, http.StatusInternalServerError, err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,6 +6,7 @@ package rubygems
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"compress/gzip"
 | 
						"compress/gzip"
 | 
				
			||||||
	"compress/zlib"
 | 
						"compress/zlib"
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
@@ -217,7 +218,11 @@ func UploadPackageFile(ctx *context.Context) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	rp, err := rubygems_module.ParsePackageMetaData(buf)
 | 
						rp, err := rubygems_module.ParsePackageMetaData(buf)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		apiError(ctx, http.StatusInternalServerError, err)
 | 
							if errors.Is(err, util.ErrInvalidArgument) {
 | 
				
			||||||
 | 
								apiError(ctx, http.StatusBadRequest, err)
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								apiError(ctx, http.StatusInternalServerError, err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if _, err := buf.Seek(0, io.SeekStart); err != nil {
 | 
						if _, err := buf.Seek(0, io.SeekStart); err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user