Merge branch 'main' into lunny/glob_protected_branch_rule
This commit is contained in:
commit
d87e6bd1a0
61 changed files with 581 additions and 51 deletions
|
@ -35,9 +35,6 @@ overrides:
|
||||||
rules:
|
rules:
|
||||||
import/no-unresolved: [0]
|
import/no-unresolved: [0]
|
||||||
import/no-extraneous-dependencies: [0]
|
import/no-extraneous-dependencies: [0]
|
||||||
- files: ["*.test.js"]
|
|
||||||
env:
|
|
||||||
jest: true
|
|
||||||
- files: ["*.config.js"]
|
- files: ["*.config.js"]
|
||||||
rules:
|
rules:
|
||||||
import/no-unused-modules: [0]
|
import/no-unused-modules: [0]
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -280,7 +280,7 @@ fmt-check: fmt
|
||||||
|
|
||||||
.PHONY: misspell-check
|
.PHONY: misspell-check
|
||||||
misspell-check:
|
misspell-check:
|
||||||
go run $(MISSPELL_PACKAGE) -error -i unknwon $(GO_DIRS) $(WEB_DIRS)
|
go run $(MISSPELL_PACKAGE) -error $(GO_DIRS) $(WEB_DIRS)
|
||||||
|
|
||||||
.PHONY: vet
|
.PHONY: vet
|
||||||
vet:
|
vet:
|
||||||
|
|
|
@ -806,7 +806,7 @@ func getNotificationByID(ctx context.Context, notificationID int64) (*Notificati
|
||||||
}
|
}
|
||||||
|
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, db.ErrNotExist{ID: notificationID}
|
return nil, db.ErrNotExist{Resource: "notification", ID: notificationID}
|
||||||
}
|
}
|
||||||
|
|
||||||
return notification, nil
|
return notification, nil
|
||||||
|
|
|
@ -167,6 +167,10 @@ func (err ErrTaskDoesNotExist) Error() string {
|
||||||
err.ID, err.RepoID, err.Type)
|
err.ID, err.RepoID, err.Type)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrTaskDoesNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// GetMigratingTask returns the migrating task by repo's id
|
// GetMigratingTask returns the migrating task by repo's id
|
||||||
func GetMigratingTask(repoID int64) (*Task, error) {
|
func GetMigratingTask(repoID int64) (*Task, error) {
|
||||||
task := Task{
|
task := Task{
|
||||||
|
|
|
@ -4,7 +4,11 @@
|
||||||
|
|
||||||
package asymkey
|
package asymkey
|
||||||
|
|
||||||
import "fmt"
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
)
|
||||||
|
|
||||||
// ErrKeyUnableVerify represents a "KeyUnableVerify" kind of error.
|
// ErrKeyUnableVerify represents a "KeyUnableVerify" kind of error.
|
||||||
type ErrKeyUnableVerify struct {
|
type ErrKeyUnableVerify struct {
|
||||||
|
@ -36,6 +40,10 @@ func (err ErrKeyNotExist) Error() string {
|
||||||
return fmt.Sprintf("public key does not exist [id: %d]", err.ID)
|
return fmt.Sprintf("public key does not exist [id: %d]", err.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrKeyNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrKeyAlreadyExist represents a "KeyAlreadyExist" kind of error.
|
// ErrKeyAlreadyExist represents a "KeyAlreadyExist" kind of error.
|
||||||
type ErrKeyAlreadyExist struct {
|
type ErrKeyAlreadyExist struct {
|
||||||
OwnerID int64
|
OwnerID int64
|
||||||
|
@ -54,6 +62,10 @@ func (err ErrKeyAlreadyExist) Error() string {
|
||||||
err.OwnerID, err.Fingerprint, err.Content)
|
err.OwnerID, err.Fingerprint, err.Content)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrKeyAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrKeyNameAlreadyUsed represents a "KeyNameAlreadyUsed" kind of error.
|
// ErrKeyNameAlreadyUsed represents a "KeyNameAlreadyUsed" kind of error.
|
||||||
type ErrKeyNameAlreadyUsed struct {
|
type ErrKeyNameAlreadyUsed struct {
|
||||||
OwnerID int64
|
OwnerID int64
|
||||||
|
@ -70,6 +82,10 @@ func (err ErrKeyNameAlreadyUsed) Error() string {
|
||||||
return fmt.Sprintf("public key already exists [owner_id: %d, name: %s]", err.OwnerID, err.Name)
|
return fmt.Sprintf("public key already exists [owner_id: %d, name: %s]", err.OwnerID, err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrKeyNameAlreadyUsed) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrGPGNoEmailFound represents a "ErrGPGNoEmailFound" kind of error.
|
// ErrGPGNoEmailFound represents a "ErrGPGNoEmailFound" kind of error.
|
||||||
type ErrGPGNoEmailFound struct {
|
type ErrGPGNoEmailFound struct {
|
||||||
FailedEmails []string
|
FailedEmails []string
|
||||||
|
@ -132,6 +148,10 @@ func (err ErrGPGKeyNotExist) Error() string {
|
||||||
return fmt.Sprintf("public gpg key does not exist [id: %d]", err.ID)
|
return fmt.Sprintf("public gpg key does not exist [id: %d]", err.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrGPGKeyNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrGPGKeyImportNotExist represents a "GPGKeyImportNotExist" kind of error.
|
// ErrGPGKeyImportNotExist represents a "GPGKeyImportNotExist" kind of error.
|
||||||
type ErrGPGKeyImportNotExist struct {
|
type ErrGPGKeyImportNotExist struct {
|
||||||
ID string
|
ID string
|
||||||
|
@ -147,6 +167,10 @@ func (err ErrGPGKeyImportNotExist) Error() string {
|
||||||
return fmt.Sprintf("public gpg key import does not exist [id: %s]", err.ID)
|
return fmt.Sprintf("public gpg key import does not exist [id: %s]", err.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrGPGKeyImportNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrGPGKeyIDAlreadyUsed represents a "GPGKeyIDAlreadyUsed" kind of error.
|
// ErrGPGKeyIDAlreadyUsed represents a "GPGKeyIDAlreadyUsed" kind of error.
|
||||||
type ErrGPGKeyIDAlreadyUsed struct {
|
type ErrGPGKeyIDAlreadyUsed struct {
|
||||||
KeyID string
|
KeyID string
|
||||||
|
@ -162,6 +186,10 @@ func (err ErrGPGKeyIDAlreadyUsed) Error() string {
|
||||||
return fmt.Sprintf("public key already exists [key_id: %s]", err.KeyID)
|
return fmt.Sprintf("public key already exists [key_id: %s]", err.KeyID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrGPGKeyIDAlreadyUsed) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrGPGKeyAccessDenied represents a "GPGKeyAccessDenied" kind of Error.
|
// ErrGPGKeyAccessDenied represents a "GPGKeyAccessDenied" kind of Error.
|
||||||
type ErrGPGKeyAccessDenied struct {
|
type ErrGPGKeyAccessDenied struct {
|
||||||
UserID int64
|
UserID int64
|
||||||
|
@ -180,6 +208,10 @@ func (err ErrGPGKeyAccessDenied) Error() string {
|
||||||
err.UserID, err.KeyID)
|
err.UserID, err.KeyID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrGPGKeyAccessDenied) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
// ErrKeyAccessDenied represents a "KeyAccessDenied" kind of error.
|
// ErrKeyAccessDenied represents a "KeyAccessDenied" kind of error.
|
||||||
type ErrKeyAccessDenied struct {
|
type ErrKeyAccessDenied struct {
|
||||||
UserID int64
|
UserID int64
|
||||||
|
@ -198,6 +230,10 @@ func (err ErrKeyAccessDenied) Error() string {
|
||||||
err.UserID, err.KeyID, err.Note)
|
err.UserID, err.KeyID, err.Note)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrKeyAccessDenied) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
// ErrDeployKeyNotExist represents a "DeployKeyNotExist" kind of error.
|
// ErrDeployKeyNotExist represents a "DeployKeyNotExist" kind of error.
|
||||||
type ErrDeployKeyNotExist struct {
|
type ErrDeployKeyNotExist struct {
|
||||||
ID int64
|
ID int64
|
||||||
|
@ -215,6 +251,10 @@ func (err ErrDeployKeyNotExist) Error() string {
|
||||||
return fmt.Sprintf("Deploy key does not exist [id: %d, key_id: %d, repo_id: %d]", err.ID, err.KeyID, err.RepoID)
|
return fmt.Sprintf("Deploy key does not exist [id: %d, key_id: %d, repo_id: %d]", err.ID, err.KeyID, err.RepoID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrDeployKeyNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrDeployKeyAlreadyExist represents a "DeployKeyAlreadyExist" kind of error.
|
// ErrDeployKeyAlreadyExist represents a "DeployKeyAlreadyExist" kind of error.
|
||||||
type ErrDeployKeyAlreadyExist struct {
|
type ErrDeployKeyAlreadyExist struct {
|
||||||
KeyID int64
|
KeyID int64
|
||||||
|
@ -231,6 +271,10 @@ func (err ErrDeployKeyAlreadyExist) Error() string {
|
||||||
return fmt.Sprintf("public key already exists [key_id: %d, repo_id: %d]", err.KeyID, err.RepoID)
|
return fmt.Sprintf("public key already exists [key_id: %d, repo_id: %d]", err.KeyID, err.RepoID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrDeployKeyAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrDeployKeyNameAlreadyUsed represents a "DeployKeyNameAlreadyUsed" kind of error.
|
// ErrDeployKeyNameAlreadyUsed represents a "DeployKeyNameAlreadyUsed" kind of error.
|
||||||
type ErrDeployKeyNameAlreadyUsed struct {
|
type ErrDeployKeyNameAlreadyUsed struct {
|
||||||
RepoID int64
|
RepoID int64
|
||||||
|
@ -247,6 +291,10 @@ func (err ErrDeployKeyNameAlreadyUsed) Error() string {
|
||||||
return fmt.Sprintf("public key with name already exists [repo_id: %d, name: %s]", err.RepoID, err.Name)
|
return fmt.Sprintf("public key with name already exists [repo_id: %d, name: %s]", err.RepoID, err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrDeployKeyNameAlreadyUsed) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrSSHInvalidTokenSignature represents a "ErrSSHInvalidTokenSignature" kind of error.
|
// ErrSSHInvalidTokenSignature represents a "ErrSSHInvalidTokenSignature" kind of error.
|
||||||
type ErrSSHInvalidTokenSignature struct {
|
type ErrSSHInvalidTokenSignature struct {
|
||||||
Wrapped error
|
Wrapped error
|
||||||
|
@ -262,3 +310,7 @@ func IsErrSSHInvalidTokenSignature(err error) bool {
|
||||||
func (err ErrSSHInvalidTokenSignature) Error() string {
|
func (err ErrSSHInvalidTokenSignature) Error() string {
|
||||||
return "the provided signature does not sign the token with the provided key"
|
return "the provided signature does not sign the token with the provided key"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrSSHInvalidTokenSignature) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
|
@ -486,7 +486,7 @@ type ErrOAuthClientIDInvalid struct {
|
||||||
ClientID string
|
ClientID string
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsErrOauthClientIDInvalid checks if an error is a ErrReviewNotExist.
|
// IsErrOauthClientIDInvalid checks if an error is a ErrOAuthClientIDInvalid.
|
||||||
func IsErrOauthClientIDInvalid(err error) bool {
|
func IsErrOauthClientIDInvalid(err error) bool {
|
||||||
_, ok := err.(ErrOAuthClientIDInvalid)
|
_, ok := err.(ErrOAuthClientIDInvalid)
|
||||||
return ok
|
return ok
|
||||||
|
@ -497,6 +497,11 @@ func (err ErrOAuthClientIDInvalid) Error() string {
|
||||||
return fmt.Sprintf("Client ID invalid [Client ID: %s]", err.ClientID)
|
return fmt.Sprintf("Client ID invalid [Client ID: %s]", err.ClientID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this as a ErrNotExist err
|
||||||
|
func (err ErrOAuthClientIDInvalid) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrOAuthApplicationNotFound will be thrown if id cannot be found
|
// ErrOAuthApplicationNotFound will be thrown if id cannot be found
|
||||||
type ErrOAuthApplicationNotFound struct {
|
type ErrOAuthApplicationNotFound struct {
|
||||||
ID int64
|
ID int64
|
||||||
|
@ -513,6 +518,11 @@ func (err ErrOAuthApplicationNotFound) Error() string {
|
||||||
return fmt.Sprintf("OAuth application not found [ID: %d]", err.ID)
|
return fmt.Sprintf("OAuth application not found [ID: %d]", err.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this as a ErrNotExist err
|
||||||
|
func (err ErrOAuthApplicationNotFound) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// GetActiveOAuth2ProviderSources returns all actived LoginOAuth2 sources
|
// GetActiveOAuth2ProviderSources returns all actived LoginOAuth2 sources
|
||||||
func GetActiveOAuth2ProviderSources() ([]*Source, error) {
|
func GetActiveOAuth2ProviderSources() ([]*Source, error) {
|
||||||
sources := make([]*Source, 0, 1)
|
sources := make([]*Source, 0, 1)
|
||||||
|
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"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/xorm"
|
"xorm.io/xorm"
|
||||||
"xorm.io/xorm/convert"
|
"xorm.io/xorm/convert"
|
||||||
|
@ -366,6 +367,11 @@ func (err ErrSourceNotExist) Error() string {
|
||||||
return fmt.Sprintf("login source does not exist [id: %d]", err.ID)
|
return fmt.Sprintf("login source does not exist [id: %d]", err.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this as a ErrNotExist err
|
||||||
|
func (err ErrSourceNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrSourceAlreadyExist represents a "SourceAlreadyExist" kind of error.
|
// ErrSourceAlreadyExist represents a "SourceAlreadyExist" kind of error.
|
||||||
type ErrSourceAlreadyExist struct {
|
type ErrSourceAlreadyExist struct {
|
||||||
Name string
|
Name string
|
||||||
|
@ -381,6 +387,11 @@ func (err ErrSourceAlreadyExist) Error() string {
|
||||||
return fmt.Sprintf("login source already exists [name: %s]", err.Name)
|
return fmt.Sprintf("login source already exists [name: %s]", err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this as a ErrExist err
|
||||||
|
func (err ErrSourceAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrSourceInUse represents a "SourceInUse" kind of error.
|
// ErrSourceInUse represents a "SourceInUse" kind of error.
|
||||||
type ErrSourceInUse struct {
|
type ErrSourceInUse struct {
|
||||||
ID int64
|
ID int64
|
||||||
|
|
|
@ -35,6 +35,10 @@ func (err ErrAccessTokenNotExist) Error() string {
|
||||||
return fmt.Sprintf("access token does not exist [sha: %s]", err.Token)
|
return fmt.Sprintf("access token does not exist [sha: %s]", err.Token)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrAccessTokenNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrAccessTokenEmpty represents a "AccessTokenEmpty" kind of error.
|
// ErrAccessTokenEmpty represents a "AccessTokenEmpty" kind of error.
|
||||||
type ErrAccessTokenEmpty struct{}
|
type ErrAccessTokenEmpty struct{}
|
||||||
|
|
||||||
|
@ -48,6 +52,10 @@ func (err ErrAccessTokenEmpty) Error() string {
|
||||||
return "access token is empty"
|
return "access token is empty"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrAccessTokenEmpty) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
var successfulAccessTokenCache *lru.Cache
|
var successfulAccessTokenCache *lru.Cache
|
||||||
|
|
||||||
// AccessToken represents a personal access token.
|
// AccessToken represents a personal access token.
|
||||||
|
|
|
@ -41,6 +41,11 @@ func (err ErrTwoFactorNotEnrolled) Error() string {
|
||||||
return fmt.Sprintf("user not enrolled in 2FA [uid: %d]", err.UID)
|
return fmt.Sprintf("user not enrolled in 2FA [uid: %d]", err.UID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this as a ErrNotExist err
|
||||||
|
func (err ErrTwoFactorNotEnrolled) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// TwoFactor represents a two-factor authentication token.
|
// TwoFactor represents a two-factor authentication token.
|
||||||
type TwoFactor struct {
|
type TwoFactor struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
|
|
@ -11,6 +11,7 @@ import (
|
||||||
|
|
||||||
"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"
|
||||||
|
|
||||||
"github.com/duo-labs/webauthn/webauthn"
|
"github.com/duo-labs/webauthn/webauthn"
|
||||||
"xorm.io/xorm"
|
"xorm.io/xorm"
|
||||||
|
@ -29,6 +30,11 @@ func (err ErrWebAuthnCredentialNotExist) Error() string {
|
||||||
return fmt.Sprintf("WebAuthn credential does not exist [credential_id: %x]", err.CredentialID)
|
return fmt.Sprintf("WebAuthn credential does not exist [credential_id: %x]", err.CredentialID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this as a ErrNotExist err
|
||||||
|
func (err ErrWebAuthnCredentialNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// IsErrWebAuthnCredentialNotExist checks if an error is a ErrWebAuthnCredentialNotExist.
|
// IsErrWebAuthnCredentialNotExist checks if an error is a ErrWebAuthnCredentialNotExist.
|
||||||
func IsErrWebAuthnCredentialNotExist(err error) bool {
|
func IsErrWebAuthnCredentialNotExist(err error) bool {
|
||||||
_, ok := err.(ErrWebAuthnCredentialNotExist)
|
_, ok := err.(ErrWebAuthnCredentialNotExist)
|
||||||
|
|
|
@ -225,7 +225,7 @@ func NamesToBean(names ...string) ([]interface{}, error) {
|
||||||
for _, name := range names {
|
for _, name := range names {
|
||||||
bean, ok := beanMap[strings.ToLower(strings.TrimSpace(name))]
|
bean, ok := beanMap[strings.ToLower(strings.TrimSpace(name))]
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("No table found that matches: %s", name)
|
return nil, fmt.Errorf("no table found that matches: %s", name)
|
||||||
}
|
}
|
||||||
if !gotBean[bean] {
|
if !gotBean[bean] {
|
||||||
beans = append(beans, bean)
|
beans = append(beans, bean)
|
||||||
|
|
|
@ -6,6 +6,8 @@ package db
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrCancelled represents an error due to context cancellation
|
// ErrCancelled represents an error due to context cancellation
|
||||||
|
@ -45,6 +47,7 @@ func (err ErrSSHDisabled) Error() string {
|
||||||
|
|
||||||
// ErrNotExist represents a non-exist error.
|
// ErrNotExist represents a non-exist error.
|
||||||
type ErrNotExist struct {
|
type ErrNotExist struct {
|
||||||
|
Resource string
|
||||||
ID int64
|
ID int64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,5 +58,18 @@ func IsErrNotExist(err error) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (err ErrNotExist) Error() string {
|
func (err ErrNotExist) Error() string {
|
||||||
return fmt.Sprintf("record does not exist [id: %d]", err.ID)
|
name := "record"
|
||||||
|
if err.Resource != "" {
|
||||||
|
name = err.Resource
|
||||||
|
}
|
||||||
|
|
||||||
|
if err.ID != 0 {
|
||||||
|
return fmt.Sprintf("%s does not exist [id: %d]", name, err.ID)
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("%s does not exist", name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this as a ErrNotExist err
|
||||||
|
func (err ErrNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,16 +5,17 @@
|
||||||
package db
|
package db
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// ErrNameEmpty name is empty error
|
// ErrNameEmpty name is empty error
|
||||||
ErrNameEmpty = errors.New("Name is empty")
|
ErrNameEmpty = util.SilentWrap{Message: "name is empty", Err: util.ErrInvalidArgument}
|
||||||
|
|
||||||
// AlphaDashDotPattern characters prohibited in a user name (anything except A-Za-z0-9_.-)
|
// AlphaDashDotPattern characters prohibited in a user name (anything except A-Za-z0-9_.-)
|
||||||
AlphaDashDotPattern = regexp.MustCompile(`[^\w-\.]`)
|
AlphaDashDotPattern = regexp.MustCompile(`[^\w-\.]`)
|
||||||
|
@ -35,6 +36,11 @@ func (err ErrNameReserved) Error() string {
|
||||||
return fmt.Sprintf("name is reserved [name: %s]", err.Name)
|
return fmt.Sprintf("name is reserved [name: %s]", err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this as a ErrInvalid err
|
||||||
|
func (err ErrNameReserved) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// ErrNamePatternNotAllowed represents a "pattern not allowed" error.
|
// ErrNamePatternNotAllowed represents a "pattern not allowed" error.
|
||||||
type ErrNamePatternNotAllowed struct {
|
type ErrNamePatternNotAllowed struct {
|
||||||
Pattern string
|
Pattern string
|
||||||
|
@ -50,6 +56,11 @@ func (err ErrNamePatternNotAllowed) Error() string {
|
||||||
return fmt.Sprintf("name pattern is not allowed [pattern: %s]", err.Pattern)
|
return fmt.Sprintf("name pattern is not allowed [pattern: %s]", err.Pattern)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this as a ErrInvalid err
|
||||||
|
func (err ErrNamePatternNotAllowed) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// ErrNameCharsNotAllowed represents a "character not allowed in name" error.
|
// ErrNameCharsNotAllowed represents a "character not allowed in name" error.
|
||||||
type ErrNameCharsNotAllowed struct {
|
type ErrNameCharsNotAllowed struct {
|
||||||
Name string
|
Name string
|
||||||
|
@ -62,7 +73,12 @@ func IsErrNameCharsNotAllowed(err error) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (err ErrNameCharsNotAllowed) Error() string {
|
func (err ErrNameCharsNotAllowed) Error() string {
|
||||||
return fmt.Sprintf("User name is invalid [%s]: must be valid alpha or numeric or dash(-_) or dot characters", err.Name)
|
return fmt.Sprintf("name is invalid [%s]: must be valid alpha or numeric or dash(-_) or dot characters", err.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this as a ErrInvalid err
|
||||||
|
func (err ErrNameCharsNotAllowed) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsUsableName checks if name is reserved or pattern of name is not allowed
|
// IsUsableName checks if name is reserved or pattern of name is not allowed
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
|
|
||||||
repo_model "code.gitea.io/gitea/models/repo"
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
"code.gitea.io/gitea/modules/git"
|
"code.gitea.io/gitea/modules/git"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrUserOwnRepos represents a "UserOwnRepos" kind of error.
|
// ErrUserOwnRepos represents a "UserOwnRepos" kind of error.
|
||||||
|
@ -63,8 +64,8 @@ type ErrNoPendingRepoTransfer struct {
|
||||||
RepoID int64
|
RepoID int64
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e ErrNoPendingRepoTransfer) Error() string {
|
func (err ErrNoPendingRepoTransfer) Error() string {
|
||||||
return fmt.Sprintf("repository doesn't have a pending transfer [repo_id: %d]", e.RepoID)
|
return fmt.Sprintf("repository doesn't have a pending transfer [repo_id: %d]", err.RepoID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsErrNoPendingTransfer is an error type when a repository has no pending
|
// IsErrNoPendingTransfer is an error type when a repository has no pending
|
||||||
|
@ -74,6 +75,10 @@ func IsErrNoPendingTransfer(err error) bool {
|
||||||
return ok
|
return ok
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrNoPendingRepoTransfer) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrRepoTransferInProgress represents the state of a repository that has an
|
// ErrRepoTransferInProgress represents the state of a repository that has an
|
||||||
// ongoing transfer
|
// ongoing transfer
|
||||||
type ErrRepoTransferInProgress struct {
|
type ErrRepoTransferInProgress struct {
|
||||||
|
@ -91,6 +96,10 @@ func (err ErrRepoTransferInProgress) Error() string {
|
||||||
return fmt.Sprintf("repository is already being transferred [uname: %s, name: %s]", err.Uname, err.Name)
|
return fmt.Sprintf("repository is already being transferred [uname: %s, name: %s]", err.Uname, err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrRepoTransferInProgress) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrInvalidCloneAddr represents a "InvalidCloneAddr" kind of error.
|
// ErrInvalidCloneAddr represents a "InvalidCloneAddr" kind of error.
|
||||||
type ErrInvalidCloneAddr struct {
|
type ErrInvalidCloneAddr struct {
|
||||||
Host string
|
Host string
|
||||||
|
@ -124,6 +133,10 @@ func (err *ErrInvalidCloneAddr) Error() string {
|
||||||
return fmt.Sprintf("migration/cloning from '%s' is not allowed", err.Host)
|
return fmt.Sprintf("migration/cloning from '%s' is not allowed", err.Host)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err *ErrInvalidCloneAddr) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// ErrUpdateTaskNotExist represents a "UpdateTaskNotExist" kind of error.
|
// ErrUpdateTaskNotExist represents a "UpdateTaskNotExist" kind of error.
|
||||||
type ErrUpdateTaskNotExist struct {
|
type ErrUpdateTaskNotExist struct {
|
||||||
UUID string
|
UUID string
|
||||||
|
@ -139,6 +152,10 @@ func (err ErrUpdateTaskNotExist) Error() string {
|
||||||
return fmt.Sprintf("update task does not exist [uuid: %s]", err.UUID)
|
return fmt.Sprintf("update task does not exist [uuid: %s]", err.UUID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrUpdateTaskNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrInvalidTagName represents a "InvalidTagName" kind of error.
|
// ErrInvalidTagName represents a "InvalidTagName" kind of error.
|
||||||
type ErrInvalidTagName struct {
|
type ErrInvalidTagName struct {
|
||||||
TagName string
|
TagName string
|
||||||
|
@ -154,6 +171,10 @@ func (err ErrInvalidTagName) Error() string {
|
||||||
return fmt.Sprintf("release tag name is not valid [tag_name: %s]", err.TagName)
|
return fmt.Sprintf("release tag name is not valid [tag_name: %s]", err.TagName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrInvalidTagName) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// ErrProtectedTagName represents a "ProtectedTagName" kind of error.
|
// ErrProtectedTagName represents a "ProtectedTagName" kind of error.
|
||||||
type ErrProtectedTagName struct {
|
type ErrProtectedTagName struct {
|
||||||
TagName string
|
TagName string
|
||||||
|
@ -169,6 +190,10 @@ func (err ErrProtectedTagName) Error() string {
|
||||||
return fmt.Sprintf("release tag name is protected [tag_name: %s]", err.TagName)
|
return fmt.Sprintf("release tag name is protected [tag_name: %s]", err.TagName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrProtectedTagName) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
// ErrRepoFileAlreadyExists represents a "RepoFileAlreadyExist" kind of error.
|
// ErrRepoFileAlreadyExists represents a "RepoFileAlreadyExist" kind of error.
|
||||||
type ErrRepoFileAlreadyExists struct {
|
type ErrRepoFileAlreadyExists struct {
|
||||||
Path string
|
Path string
|
||||||
|
@ -184,6 +209,10 @@ func (err ErrRepoFileAlreadyExists) Error() string {
|
||||||
return fmt.Sprintf("repository file already exists [path: %s]", err.Path)
|
return fmt.Sprintf("repository file already exists [path: %s]", err.Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrRepoFileAlreadyExists) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrRepoFileDoesNotExist represents a "RepoFileDoesNotExist" kind of error.
|
// ErrRepoFileDoesNotExist represents a "RepoFileDoesNotExist" kind of error.
|
||||||
type ErrRepoFileDoesNotExist struct {
|
type ErrRepoFileDoesNotExist struct {
|
||||||
Path string
|
Path string
|
||||||
|
@ -200,6 +229,10 @@ func (err ErrRepoFileDoesNotExist) Error() string {
|
||||||
return fmt.Sprintf("repository file does not exist [path: %s]", err.Path)
|
return fmt.Sprintf("repository file does not exist [path: %s]", err.Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrRepoFileDoesNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrFilenameInvalid represents a "FilenameInvalid" kind of error.
|
// ErrFilenameInvalid represents a "FilenameInvalid" kind of error.
|
||||||
type ErrFilenameInvalid struct {
|
type ErrFilenameInvalid struct {
|
||||||
Path string
|
Path string
|
||||||
|
@ -215,6 +248,10 @@ func (err ErrFilenameInvalid) Error() string {
|
||||||
return fmt.Sprintf("path contains a malformed path component [path: %s]", err.Path)
|
return fmt.Sprintf("path contains a malformed path component [path: %s]", err.Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrFilenameInvalid) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// ErrUserCannotCommit represents "UserCannotCommit" kind of error.
|
// ErrUserCannotCommit represents "UserCannotCommit" kind of error.
|
||||||
type ErrUserCannotCommit struct {
|
type ErrUserCannotCommit struct {
|
||||||
UserName string
|
UserName string
|
||||||
|
@ -230,6 +267,10 @@ func (err ErrUserCannotCommit) Error() string {
|
||||||
return fmt.Sprintf("user cannot commit to repo [user: %s]", err.UserName)
|
return fmt.Sprintf("user cannot commit to repo [user: %s]", err.UserName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrUserCannotCommit) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
// ErrFilePathInvalid represents a "FilePathInvalid" kind of error.
|
// ErrFilePathInvalid represents a "FilePathInvalid" kind of error.
|
||||||
type ErrFilePathInvalid struct {
|
type ErrFilePathInvalid struct {
|
||||||
Message string
|
Message string
|
||||||
|
@ -251,6 +292,10 @@ func (err ErrFilePathInvalid) Error() string {
|
||||||
return fmt.Sprintf("path is invalid [path: %s]", err.Path)
|
return fmt.Sprintf("path is invalid [path: %s]", err.Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrFilePathInvalid) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// ErrFilePathProtected represents a "FilePathProtected" kind of error.
|
// ErrFilePathProtected represents a "FilePathProtected" kind of error.
|
||||||
type ErrFilePathProtected struct {
|
type ErrFilePathProtected struct {
|
||||||
Message string
|
Message string
|
||||||
|
@ -270,6 +315,10 @@ func (err ErrFilePathProtected) Error() string {
|
||||||
return fmt.Sprintf("path is protected and can not be changed [path: %s]", err.Path)
|
return fmt.Sprintf("path is protected and can not be changed [path: %s]", err.Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrFilePathProtected) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
// __________ .__
|
// __________ .__
|
||||||
// \______ \____________ ____ ____ | |__
|
// \______ \____________ ____ ____ | |__
|
||||||
// | | _/\_ __ \__ \ / \_/ ___\| | \
|
// | | _/\_ __ \__ \ / \_/ ___\| | \
|
||||||
|
@ -292,6 +341,10 @@ func (err ErrBranchDoesNotExist) Error() string {
|
||||||
return fmt.Sprintf("branch does not exist [name: %s]", err.BranchName)
|
return fmt.Sprintf("branch does not exist [name: %s]", err.BranchName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrBranchDoesNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrBranchAlreadyExists represents an error that branch with such name already exists.
|
// ErrBranchAlreadyExists represents an error that branch with such name already exists.
|
||||||
type ErrBranchAlreadyExists struct {
|
type ErrBranchAlreadyExists struct {
|
||||||
BranchName string
|
BranchName string
|
||||||
|
@ -307,6 +360,10 @@ func (err ErrBranchAlreadyExists) Error() string {
|
||||||
return fmt.Sprintf("branch already exists [name: %s]", err.BranchName)
|
return fmt.Sprintf("branch already exists [name: %s]", err.BranchName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrBranchAlreadyExists) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrBranchNameConflict represents an error that branch name conflicts with other branch.
|
// ErrBranchNameConflict represents an error that branch name conflicts with other branch.
|
||||||
type ErrBranchNameConflict struct {
|
type ErrBranchNameConflict struct {
|
||||||
BranchName string
|
BranchName string
|
||||||
|
@ -322,6 +379,10 @@ func (err ErrBranchNameConflict) Error() string {
|
||||||
return fmt.Sprintf("branch conflicts with existing branch [name: %s]", err.BranchName)
|
return fmt.Sprintf("branch conflicts with existing branch [name: %s]", err.BranchName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrBranchNameConflict) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrBranchesEqual represents an error that branch name conflicts with other branch.
|
// ErrBranchesEqual represents an error that branch name conflicts with other branch.
|
||||||
type ErrBranchesEqual struct {
|
type ErrBranchesEqual struct {
|
||||||
BaseBranchName string
|
BaseBranchName string
|
||||||
|
@ -338,6 +399,10 @@ func (err ErrBranchesEqual) Error() string {
|
||||||
return fmt.Sprintf("branches are equal [head: %sm base: %s]", err.HeadBranchName, err.BaseBranchName)
|
return fmt.Sprintf("branches are equal [head: %sm base: %s]", err.HeadBranchName, err.BaseBranchName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrBranchesEqual) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// ErrDisallowedToMerge represents an error that a branch is protected and the current user is not allowed to modify it.
|
// ErrDisallowedToMerge represents an error that a branch is protected and the current user is not allowed to modify it.
|
||||||
type ErrDisallowedToMerge struct {
|
type ErrDisallowedToMerge struct {
|
||||||
Reason string
|
Reason string
|
||||||
|
@ -353,6 +418,10 @@ func (err ErrDisallowedToMerge) Error() string {
|
||||||
return fmt.Sprintf("not allowed to merge [reason: %s]", err.Reason)
|
return fmt.Sprintf("not allowed to merge [reason: %s]", err.Reason)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrDisallowedToMerge) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
// ErrTagAlreadyExists represents an error that tag with such name already exists.
|
// ErrTagAlreadyExists represents an error that tag with such name already exists.
|
||||||
type ErrTagAlreadyExists struct {
|
type ErrTagAlreadyExists struct {
|
||||||
TagName string
|
TagName string
|
||||||
|
@ -368,6 +437,10 @@ func (err ErrTagAlreadyExists) Error() string {
|
||||||
return fmt.Sprintf("tag already exists [name: %s]", err.TagName)
|
return fmt.Sprintf("tag already exists [name: %s]", err.TagName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrTagAlreadyExists) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrSHADoesNotMatch represents a "SHADoesNotMatch" kind of error.
|
// ErrSHADoesNotMatch represents a "SHADoesNotMatch" kind of error.
|
||||||
type ErrSHADoesNotMatch struct {
|
type ErrSHADoesNotMatch struct {
|
||||||
Path string
|
Path string
|
||||||
|
@ -400,6 +473,10 @@ func (err ErrSHANotFound) Error() string {
|
||||||
return fmt.Sprintf("sha not found [%s]", err.SHA)
|
return fmt.Sprintf("sha not found [%s]", err.SHA)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrSHANotFound) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrCommitIDDoesNotMatch represents a "CommitIDDoesNotMatch" kind of error.
|
// ErrCommitIDDoesNotMatch represents a "CommitIDDoesNotMatch" kind of error.
|
||||||
type ErrCommitIDDoesNotMatch struct {
|
type ErrCommitIDDoesNotMatch struct {
|
||||||
GivenCommitID string
|
GivenCommitID string
|
||||||
|
@ -446,6 +523,10 @@ func (err ErrInvalidMergeStyle) Error() string {
|
||||||
err.ID, err.Style)
|
err.ID, err.Style)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrInvalidMergeStyle) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// ErrMergeConflicts represents an error if merging fails with a conflict
|
// ErrMergeConflicts represents an error if merging fails with a conflict
|
||||||
type ErrMergeConflicts struct {
|
type ErrMergeConflicts struct {
|
||||||
Style repo_model.MergeStyle
|
Style repo_model.MergeStyle
|
||||||
|
|
|
@ -6,6 +6,8 @@ package foreignreference
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrLocalIndexNotExist represents a "LocalIndexNotExist" kind of error.
|
// ErrLocalIndexNotExist represents a "LocalIndexNotExist" kind of error.
|
||||||
|
@ -25,6 +27,10 @@ func (err ErrLocalIndexNotExist) Error() string {
|
||||||
return fmt.Sprintf("repository %d has no LocalIndex for ForeignIndex %d of type %s", err.RepoID, err.ForeignIndex, err.Type)
|
return fmt.Sprintf("repository %d has no LocalIndex for ForeignIndex %d of type %s", err.RepoID, err.ForeignIndex, err.Type)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrLocalIndexNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrForeignIndexNotExist represents a "ForeignIndexNotExist" kind of error.
|
// ErrForeignIndexNotExist represents a "ForeignIndexNotExist" kind of error.
|
||||||
type ErrForeignIndexNotExist struct {
|
type ErrForeignIndexNotExist struct {
|
||||||
RepoID int64
|
RepoID int64
|
||||||
|
@ -41,3 +47,7 @@ func IsErrForeignIndexNotExist(err error) bool {
|
||||||
func (err ErrForeignIndexNotExist) Error() string {
|
func (err ErrForeignIndexNotExist) Error() string {
|
||||||
return fmt.Sprintf("repository %d has no ForeignIndex for LocalIndex %d of type %s", err.RepoID, err.LocalIndex, err.Type)
|
return fmt.Sprintf("repository %d has no ForeignIndex for LocalIndex %d of type %s", err.RepoID, err.LocalIndex, err.Type)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrForeignIndexNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@ package git
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
|
@ -17,6 +16,7 @@ import (
|
||||||
"code.gitea.io/gitea/modules/lfs"
|
"code.gitea.io/gitea/modules/lfs"
|
||||||
"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"
|
||||||
)
|
)
|
||||||
|
@ -38,6 +38,10 @@ func (err ErrLFSLockNotExist) Error() string {
|
||||||
return fmt.Sprintf("lfs lock does not exist [id: %d, rid: %d, path: %s]", err.ID, err.RepoID, err.Path)
|
return fmt.Sprintf("lfs lock does not exist [id: %d, rid: %d, path: %s]", err.ID, err.RepoID, err.Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrLFSLockNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrLFSUnauthorizedAction represents a "LFSUnauthorizedAction" kind of error.
|
// ErrLFSUnauthorizedAction represents a "LFSUnauthorizedAction" kind of error.
|
||||||
type ErrLFSUnauthorizedAction struct {
|
type ErrLFSUnauthorizedAction struct {
|
||||||
RepoID int64
|
RepoID int64
|
||||||
|
@ -58,6 +62,10 @@ func (err ErrLFSUnauthorizedAction) Error() string {
|
||||||
return fmt.Sprintf("User %s doesn't have read access for lfs lock [rid: %d]", err.UserName, err.RepoID)
|
return fmt.Sprintf("User %s doesn't have read access for lfs lock [rid: %d]", err.UserName, err.RepoID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrLFSUnauthorizedAction) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
// ErrLFSLockAlreadyExist represents a "LFSLockAlreadyExist" kind of error.
|
// ErrLFSLockAlreadyExist represents a "LFSLockAlreadyExist" kind of error.
|
||||||
type ErrLFSLockAlreadyExist struct {
|
type ErrLFSLockAlreadyExist struct {
|
||||||
RepoID int64
|
RepoID int64
|
||||||
|
@ -74,6 +82,10 @@ func (err ErrLFSLockAlreadyExist) Error() string {
|
||||||
return fmt.Sprintf("lfs lock already exists [rid: %d, path: %s]", err.RepoID, err.Path)
|
return fmt.Sprintf("lfs lock already exists [rid: %d, path: %s]", err.RepoID, err.Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrLFSLockAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrLFSFileLocked represents a "LFSFileLocked" kind of error.
|
// ErrLFSFileLocked represents a "LFSFileLocked" kind of error.
|
||||||
type ErrLFSFileLocked struct {
|
type ErrLFSFileLocked struct {
|
||||||
RepoID int64
|
RepoID int64
|
||||||
|
@ -91,6 +103,10 @@ func (err ErrLFSFileLocked) Error() string {
|
||||||
return fmt.Sprintf("File is lfs locked [repo: %d, locked by: %s, path: %s]", err.RepoID, err.UserName, err.Path)
|
return fmt.Sprintf("File is lfs locked [repo: %d, locked by: %s, path: %s]", err.RepoID, err.UserName, err.Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrLFSFileLocked) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
// LFSMetaObject stores metadata for LFS tracked files.
|
// LFSMetaObject stores metadata for LFS tracked files.
|
||||||
type LFSMetaObject struct {
|
type LFSMetaObject struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
@ -114,7 +130,7 @@ type LFSTokenResponse struct {
|
||||||
|
|
||||||
// ErrLFSObjectNotExist is returned from lfs models functions in order
|
// ErrLFSObjectNotExist is returned from lfs models functions in order
|
||||||
// to differentiate between database and missing object errors.
|
// to differentiate between database and missing object errors.
|
||||||
var ErrLFSObjectNotExist = errors.New("LFS Meta object does not exist")
|
var ErrLFSObjectNotExist = db.ErrNotExist{Resource: "LFS Meta object"}
|
||||||
|
|
||||||
// NewLFSMetaObject stores a given populated LFSMetaObject structure in the database
|
// NewLFSMetaObject stores a given populated LFSMetaObject structure in the database
|
||||||
// if it is not already present.
|
// if it is not already present.
|
||||||
|
|
|
@ -28,6 +28,7 @@ import (
|
||||||
"code.gitea.io/gitea/modules/references"
|
"code.gitea.io/gitea/modules/references"
|
||||||
"code.gitea.io/gitea/modules/structs"
|
"code.gitea.io/gitea/modules/structs"
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
|
||||||
"xorm.io/builder"
|
"xorm.io/builder"
|
||||||
"xorm.io/xorm"
|
"xorm.io/xorm"
|
||||||
|
@ -49,6 +50,10 @@ func (err ErrCommentNotExist) Error() string {
|
||||||
return fmt.Sprintf("comment does not exist [id: %d, issue_id: %d]", err.ID, err.IssueID)
|
return fmt.Sprintf("comment does not exist [id: %d, issue_id: %d]", err.ID, err.IssueID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrCommentNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// CommentType defines whether a comment is just a simple comment, an action (like close) or a reference.
|
// CommentType defines whether a comment is just a simple comment, an action (like close) or a reference.
|
||||||
type CommentType int
|
type CommentType int
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ import (
|
||||||
"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"
|
||||||
)
|
)
|
||||||
|
@ -201,6 +202,10 @@ func (err ErrIssueContentHistoryNotExist) Error() string {
|
||||||
return fmt.Sprintf("issue content history does not exist [id: %d]", err.ID)
|
return fmt.Sprintf("issue content history does not exist [id: %d]", err.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrIssueContentHistoryNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// GetIssueContentHistoryByID get issue content history
|
// GetIssueContentHistoryByID get issue content history
|
||||||
func GetIssueContentHistoryByID(dbCtx context.Context, id int64) (*ContentHistory, error) {
|
func GetIssueContentHistoryByID(dbCtx context.Context, id int64) (*ContentHistory, error) {
|
||||||
h := &ContentHistory{}
|
h := &ContentHistory{}
|
||||||
|
|
|
@ -11,6 +11,7 @@ import (
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrDependencyExists represents a "DependencyAlreadyExists" kind of error.
|
// ErrDependencyExists represents a "DependencyAlreadyExists" kind of error.
|
||||||
|
@ -29,6 +30,10 @@ func (err ErrDependencyExists) Error() string {
|
||||||
return fmt.Sprintf("issue dependency does already exist [issue id: %d, dependency id: %d]", err.IssueID, err.DependencyID)
|
return fmt.Sprintf("issue dependency does already exist [issue id: %d, dependency id: %d]", err.IssueID, err.DependencyID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrDependencyExists) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrDependencyNotExists represents a "DependencyAlreadyExists" kind of error.
|
// ErrDependencyNotExists represents a "DependencyAlreadyExists" kind of error.
|
||||||
type ErrDependencyNotExists struct {
|
type ErrDependencyNotExists struct {
|
||||||
IssueID int64
|
IssueID int64
|
||||||
|
@ -45,6 +50,10 @@ func (err ErrDependencyNotExists) Error() string {
|
||||||
return fmt.Sprintf("issue dependency does not exist [issue id: %d, dependency id: %d]", err.IssueID, err.DependencyID)
|
return fmt.Sprintf("issue dependency does not exist [issue id: %d, dependency id: %d]", err.IssueID, err.DependencyID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrDependencyNotExists) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrCircularDependency represents a "DependencyCircular" kind of error.
|
// ErrCircularDependency represents a "DependencyCircular" kind of error.
|
||||||
type ErrCircularDependency struct {
|
type ErrCircularDependency struct {
|
||||||
IssueID int64
|
IssueID int64
|
||||||
|
@ -91,6 +100,10 @@ func (err ErrUnknownDependencyType) Error() string {
|
||||||
return fmt.Sprintf("unknown dependency type [type: %d]", err.Type)
|
return fmt.Sprintf("unknown dependency type [type: %d]", err.Type)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrUnknownDependencyType) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// IssueDependency represents an issue dependency
|
// IssueDependency represents an issue dependency
|
||||||
type IssueDependency struct {
|
type IssueDependency struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
|
|
@ -52,6 +52,10 @@ func (err ErrIssueNotExist) Error() string {
|
||||||
return fmt.Sprintf("issue does not exist [id: %d, repo_id: %d, index: %d]", err.ID, err.RepoID, err.Index)
|
return fmt.Sprintf("issue does not exist [id: %d, repo_id: %d, index: %d]", err.ID, err.RepoID, err.Index)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrIssueNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrIssueIsClosed represents a "IssueIsClosed" kind of error.
|
// ErrIssueIsClosed represents a "IssueIsClosed" kind of error.
|
||||||
type ErrIssueIsClosed struct {
|
type ErrIssueIsClosed struct {
|
||||||
ID int64
|
ID int64
|
||||||
|
@ -1492,7 +1496,8 @@ func applySubscribedCondition(sess *xorm.Session, subscriberID int64) *xorm.Sess
|
||||||
builder.In("issue.repo_id", builder.
|
builder.In("issue.repo_id", builder.
|
||||||
Select("id").
|
Select("id").
|
||||||
From("watch").
|
From("watch").
|
||||||
Where(builder.Eq{"user_id": subscriberID, "mode": true}),
|
Where(builder.And(builder.Eq{"user_id": subscriberID},
|
||||||
|
builder.In("mode", repo_model.WatchModeNormal, repo_model.WatchModeAuto))),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
|
@ -38,6 +38,10 @@ func (err ErrRepoLabelNotExist) Error() string {
|
||||||
return fmt.Sprintf("label does not exist [label_id: %d, repo_id: %d]", err.LabelID, err.RepoID)
|
return fmt.Sprintf("label does not exist [label_id: %d, repo_id: %d]", err.LabelID, err.RepoID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrRepoLabelNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrOrgLabelNotExist represents a "OrgLabelNotExist" kind of error.
|
// ErrOrgLabelNotExist represents a "OrgLabelNotExist" kind of error.
|
||||||
type ErrOrgLabelNotExist struct {
|
type ErrOrgLabelNotExist struct {
|
||||||
LabelID int64
|
LabelID int64
|
||||||
|
@ -54,6 +58,10 @@ func (err ErrOrgLabelNotExist) Error() string {
|
||||||
return fmt.Sprintf("label does not exist [label_id: %d, org_id: %d]", err.LabelID, err.OrgID)
|
return fmt.Sprintf("label does not exist [label_id: %d, org_id: %d]", err.LabelID, err.OrgID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrOrgLabelNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrLabelNotExist represents a "LabelNotExist" kind of error.
|
// ErrLabelNotExist represents a "LabelNotExist" kind of error.
|
||||||
type ErrLabelNotExist struct {
|
type ErrLabelNotExist struct {
|
||||||
LabelID int64
|
LabelID int64
|
||||||
|
@ -69,6 +77,10 @@ func (err ErrLabelNotExist) Error() string {
|
||||||
return fmt.Sprintf("label does not exist [label_id: %d]", err.LabelID)
|
return fmt.Sprintf("label does not exist [label_id: %d]", err.LabelID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrLabelNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// LabelColorPattern is a regexp witch can validate LabelColor
|
// LabelColorPattern is a regexp witch can validate LabelColor
|
||||||
var LabelColorPattern = regexp.MustCompile("^#?(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{3})$")
|
var LabelColorPattern = regexp.MustCompile("^#?(?:[0-9a-fA-F]{6}|[0-9a-fA-F]{3})$")
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ import (
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
api "code.gitea.io/gitea/modules/structs"
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
|
||||||
"xorm.io/builder"
|
"xorm.io/builder"
|
||||||
)
|
)
|
||||||
|
@ -39,6 +40,10 @@ func (err ErrMilestoneNotExist) Error() string {
|
||||||
return fmt.Sprintf("milestone does not exist [id: %d, repo_id: %d]", err.ID, err.RepoID)
|
return fmt.Sprintf("milestone does not exist [id: %d, repo_id: %d]", err.ID, err.RepoID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrMilestoneNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// Milestone represents a milestone of repository.
|
// Milestone represents a milestone of repository.
|
||||||
type Milestone struct {
|
type Milestone struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
|
|
@ -46,6 +46,10 @@ func (err ErrPullRequestNotExist) Error() string {
|
||||||
err.ID, err.IssueID, err.HeadRepoID, err.BaseRepoID, err.HeadBranch, err.BaseBranch)
|
err.ID, err.IssueID, err.HeadRepoID, err.BaseRepoID, err.HeadBranch, err.BaseBranch)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrPullRequestNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrPullRequestAlreadyExists represents a "PullRequestAlreadyExists"-error
|
// ErrPullRequestAlreadyExists represents a "PullRequestAlreadyExists"-error
|
||||||
type ErrPullRequestAlreadyExists struct {
|
type ErrPullRequestAlreadyExists struct {
|
||||||
ID int64
|
ID int64
|
||||||
|
@ -68,6 +72,10 @@ func (err ErrPullRequestAlreadyExists) Error() string {
|
||||||
err.ID, err.IssueID, err.HeadRepoID, err.BaseRepoID, err.HeadBranch, err.BaseBranch)
|
err.ID, err.IssueID, err.HeadRepoID, err.BaseRepoID, err.HeadBranch, err.BaseBranch)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrPullRequestAlreadyExists) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrPullRequestHeadRepoMissing represents a "ErrPullRequestHeadRepoMissing" error
|
// ErrPullRequestHeadRepoMissing represents a "ErrPullRequestHeadRepoMissing" error
|
||||||
type ErrPullRequestHeadRepoMissing struct {
|
type ErrPullRequestHeadRepoMissing struct {
|
||||||
ID int64
|
ID int64
|
||||||
|
|
|
@ -15,6 +15,7 @@ import (
|
||||||
"code.gitea.io/gitea/modules/container"
|
"code.gitea.io/gitea/modules/container"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
|
||||||
"xorm.io/builder"
|
"xorm.io/builder"
|
||||||
)
|
)
|
||||||
|
@ -34,6 +35,10 @@ func (err ErrForbiddenIssueReaction) Error() string {
|
||||||
return fmt.Sprintf("'%s' is not an allowed reaction", err.Reaction)
|
return fmt.Sprintf("'%s' is not an allowed reaction", err.Reaction)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrForbiddenIssueReaction) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
// ErrReactionAlreadyExist is used when a existing reaction was try to created
|
// ErrReactionAlreadyExist is used when a existing reaction was try to created
|
||||||
type ErrReactionAlreadyExist struct {
|
type ErrReactionAlreadyExist struct {
|
||||||
Reaction string
|
Reaction string
|
||||||
|
@ -49,6 +54,10 @@ func (err ErrReactionAlreadyExist) Error() string {
|
||||||
return fmt.Sprintf("reaction '%s' already exists", err.Reaction)
|
return fmt.Sprintf("reaction '%s' already exists", err.Reaction)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrReactionAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// Reaction represents a reactions on issues and comments.
|
// Reaction represents a reactions on issues and comments.
|
||||||
type Reaction struct {
|
type Reaction struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
|
|
@ -39,6 +39,10 @@ func (err ErrReviewNotExist) Error() string {
|
||||||
return fmt.Sprintf("review does not exist [id: %d]", err.ID)
|
return fmt.Sprintf("review does not exist [id: %d]", err.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrReviewNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrNotValidReviewRequest an not allowed review request modify
|
// ErrNotValidReviewRequest an not allowed review request modify
|
||||||
type ErrNotValidReviewRequest struct {
|
type ErrNotValidReviewRequest struct {
|
||||||
Reason string
|
Reason string
|
||||||
|
@ -59,6 +63,10 @@ func (err ErrNotValidReviewRequest) Error() string {
|
||||||
err.RepoID)
|
err.RepoID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrNotValidReviewRequest) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// ReviewType defines the sort of feedback a review gives
|
// ReviewType defines the sort of feedback a review gives
|
||||||
type ReviewType int
|
type ReviewType int
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,10 @@ func (err ErrIssueStopwatchNotExist) Error() string {
|
||||||
return fmt.Sprintf("issue stopwatch doesn't exist[uid: %d, issue_id: %d", err.UserID, err.IssueID)
|
return fmt.Sprintf("issue stopwatch doesn't exist[uid: %d, issue_id: %d", err.UserID, err.IssueID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrIssueStopwatchNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrIssueStopwatchAlreadyExist represents an error that stopwatch is already exist
|
// ErrIssueStopwatchAlreadyExist represents an error that stopwatch is already exist
|
||||||
type ErrIssueStopwatchAlreadyExist struct {
|
type ErrIssueStopwatchAlreadyExist struct {
|
||||||
UserID int64
|
UserID int64
|
||||||
|
@ -35,6 +39,10 @@ func (err ErrIssueStopwatchAlreadyExist) Error() string {
|
||||||
return fmt.Sprintf("issue stopwatch already exists[uid: %d, issue_id: %d", err.UserID, err.IssueID)
|
return fmt.Sprintf("issue stopwatch already exists[uid: %d, issue_id: %d", err.UserID, err.IssueID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrIssueStopwatchAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// Stopwatch represents a stopwatch for time tracking.
|
// Stopwatch represents a stopwatch for time tracking.
|
||||||
type Stopwatch struct {
|
type Stopwatch struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
|
|
@ -236,7 +236,7 @@ func DeleteIssueUserTimes(issue *Issue, user *user_model.User) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if removedTime == 0 {
|
if removedTime == 0 {
|
||||||
return db.ErrNotExist{}
|
return db.ErrNotExist{Resource: "tracked_time"}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := issue.LoadRepo(ctx); err != nil {
|
if err := issue.LoadRepo(ctx); err != nil {
|
||||||
|
@ -296,7 +296,7 @@ func deleteTimes(ctx context.Context, opts FindTrackedTimesOptions) (removedTime
|
||||||
|
|
||||||
func deleteTime(ctx context.Context, t *TrackedTime) error {
|
func deleteTime(ctx context.Context, t *TrackedTime) error {
|
||||||
if t.Deleted {
|
if t.Deleted {
|
||||||
return db.ErrNotExist{ID: t.ID}
|
return db.ErrNotExist{Resource: "tracked_time", ID: t.ID}
|
||||||
}
|
}
|
||||||
t.Deleted = true
|
t.Deleted = true
|
||||||
_, err := db.GetEngine(ctx).ID(t.ID).Cols("deleted").Update(t)
|
_, err := db.GetEngine(ctx).ID(t.ID).Cols("deleted").Update(t)
|
||||||
|
@ -310,7 +310,7 @@ func GetTrackedTimeByID(id int64) (*TrackedTime, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
} else if !has {
|
} else if !has {
|
||||||
return nil, db.ErrNotExist{ID: id}
|
return nil, db.ErrNotExist{Resource: "tracked_time", ID: id}
|
||||||
}
|
}
|
||||||
return time, nil
|
return time, nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ import (
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/structs"
|
"code.gitea.io/gitea/modules/structs"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
|
||||||
"xorm.io/builder"
|
"xorm.io/builder"
|
||||||
)
|
)
|
||||||
|
@ -45,6 +46,10 @@ func (err ErrOrgNotExist) Error() string {
|
||||||
return fmt.Sprintf("org does not exist [id: %d, name: %s]", err.ID, err.Name)
|
return fmt.Sprintf("org does not exist [id: %d, name: %s]", err.ID, err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrOrgNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrLastOrgOwner represents a "LastOrgOwner" kind of error.
|
// ErrLastOrgOwner represents a "LastOrgOwner" kind of error.
|
||||||
type ErrLastOrgOwner struct {
|
type ErrLastOrgOwner struct {
|
||||||
UID int64
|
UID int64
|
||||||
|
@ -73,6 +78,10 @@ func (err ErrUserNotAllowedCreateOrg) Error() string {
|
||||||
return "user is not allowed to create organizations"
|
return "user is not allowed to create organizations"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrUserNotAllowedCreateOrg) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
// Organization represents an organization
|
// Organization represents an organization
|
||||||
type Organization user_model.User
|
type Organization user_model.User
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ import (
|
||||||
"code.gitea.io/gitea/models/unit"
|
"code.gitea.io/gitea/models/unit"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
|
||||||
"xorm.io/builder"
|
"xorm.io/builder"
|
||||||
)
|
)
|
||||||
|
@ -43,6 +44,10 @@ func (err ErrTeamAlreadyExist) Error() string {
|
||||||
return fmt.Sprintf("team already exists [org_id: %d, name: %s]", err.OrgID, err.Name)
|
return fmt.Sprintf("team already exists [org_id: %d, name: %s]", err.OrgID, err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrTeamAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrTeamNotExist represents a "TeamNotExist" error
|
// ErrTeamNotExist represents a "TeamNotExist" error
|
||||||
type ErrTeamNotExist struct {
|
type ErrTeamNotExist struct {
|
||||||
OrgID int64
|
OrgID int64
|
||||||
|
@ -60,6 +65,10 @@ func (err ErrTeamNotExist) Error() string {
|
||||||
return fmt.Sprintf("team does not exist [org_id %d, team_id %d, name: %s]", err.OrgID, err.TeamID, err.Name)
|
return fmt.Sprintf("team does not exist [org_id %d, team_id %d, name: %s]", err.OrgID, err.TeamID, err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrTeamNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// OwnerTeamName return the owner team name
|
// OwnerTeamName return the owner team name
|
||||||
const OwnerTeamName = "Owners"
|
const OwnerTeamName = "Owners"
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,10 @@ func (err ErrProjectNotExist) Error() string {
|
||||||
return fmt.Sprintf("projects does not exist [id: %d]", err.ID)
|
return fmt.Sprintf("projects does not exist [id: %d]", err.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrProjectNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrProjectBoardNotExist represents a "ProjectBoardNotExist" kind of error.
|
// ErrProjectBoardNotExist represents a "ProjectBoardNotExist" kind of error.
|
||||||
type ErrProjectBoardNotExist struct {
|
type ErrProjectBoardNotExist struct {
|
||||||
BoardID int64
|
BoardID int64
|
||||||
|
@ -70,6 +74,10 @@ func (err ErrProjectBoardNotExist) Error() string {
|
||||||
return fmt.Sprintf("project board does not exist [id: %d]", err.BoardID)
|
return fmt.Sprintf("project board does not exist [id: %d]", err.BoardID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrProjectBoardNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// Project represents a project board
|
// Project represents a project board
|
||||||
type Project struct {
|
type Project struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
|
|
@ -90,7 +90,7 @@ func DeleteScheduledAutoMerge(ctx context.Context, pullID int64) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
} else if !exist {
|
} else if !exist {
|
||||||
return db.ErrNotExist{ID: pullID}
|
return db.ErrNotExist{Resource: "auto_merge", ID: pullID}
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = db.GetEngine(ctx).ID(scheduledPRM.ID).Delete(&AutoMerge{})
|
_, err = db.GetEngine(ctx).ID(scheduledPRM.ID).Delete(&AutoMerge{})
|
||||||
|
|
|
@ -14,6 +14,7 @@ import (
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/storage"
|
"code.gitea.io/gitea/modules/storage"
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Attachment represent a attachment of issue/comment/release.
|
// Attachment represent a attachment of issue/comment/release.
|
||||||
|
@ -83,6 +84,10 @@ func (err ErrAttachmentNotExist) Error() string {
|
||||||
return fmt.Sprintf("attachment does not exist [id: %d, uuid: %s]", err.ID, err.UUID)
|
return fmt.Sprintf("attachment does not exist [id: %d, uuid: %s]", err.ID, err.UUID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrAttachmentNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// GetAttachmentByID returns attachment by given id
|
// GetAttachmentByID returns attachment by given id
|
||||||
func GetAttachmentByID(ctx context.Context, id int64) (*Attachment, error) {
|
func GetAttachmentByID(ctx context.Context, id int64) (*Attachment, error) {
|
||||||
attach := &Attachment{}
|
attach := &Attachment{}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrRedirectNotExist represents a "RedirectNotExist" kind of error.
|
// ErrRedirectNotExist represents a "RedirectNotExist" kind of error.
|
||||||
|
@ -28,6 +29,10 @@ func (err ErrRedirectNotExist) Error() string {
|
||||||
return fmt.Sprintf("repository redirect does not exist [uid: %d, name: %s]", err.OwnerID, err.RepoName)
|
return fmt.Sprintf("repository redirect does not exist [uid: %d, name: %s]", err.OwnerID, err.RepoName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrRedirectNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// Redirect represents that a repo name should be redirected to another
|
// Redirect represents that a repo name should be redirected to another
|
||||||
type Redirect struct {
|
type Redirect struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
|
|
@ -37,6 +37,10 @@ func (err ErrReleaseAlreadyExist) Error() string {
|
||||||
return fmt.Sprintf("release tag already exist [tag_name: %s]", err.TagName)
|
return fmt.Sprintf("release tag already exist [tag_name: %s]", err.TagName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrReleaseAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrReleaseNotExist represents a "ReleaseNotExist" kind of error.
|
// ErrReleaseNotExist represents a "ReleaseNotExist" kind of error.
|
||||||
type ErrReleaseNotExist struct {
|
type ErrReleaseNotExist struct {
|
||||||
ID int64
|
ID int64
|
||||||
|
@ -53,6 +57,10 @@ func (err ErrReleaseNotExist) Error() string {
|
||||||
return fmt.Sprintf("release tag does not exist [id: %d, tag_name: %s]", err.ID, err.TagName)
|
return fmt.Sprintf("release tag does not exist [id: %d, tag_name: %s]", err.ID, err.TagName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrReleaseNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// Release represents a release of repository.
|
// Release represents a release of repository.
|
||||||
type Release struct {
|
type Release struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
|
|
@ -43,6 +43,10 @@ func (err ErrUserDoesNotHaveAccessToRepo) Error() string {
|
||||||
return fmt.Sprintf("user doesn't have access to repo [user_id: %d, repo_name: %s]", err.UserID, err.RepoName)
|
return fmt.Sprintf("user doesn't have access to repo [user_id: %d, repo_name: %s]", err.UserID, err.RepoName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrUserDoesNotHaveAccessToRepo) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
reservedRepoNames = []string{".", "..", "-"}
|
reservedRepoNames = []string{".", "..", "-"}
|
||||||
reservedRepoPatterns = []string{"*.git", "*.wiki", "*.rss", "*.atom"}
|
reservedRepoPatterns = []string{"*.git", "*.wiki", "*.rss", "*.atom"}
|
||||||
|
@ -643,6 +647,11 @@ func (err ErrRepoNotExist) Error() string {
|
||||||
err.ID, err.UID, err.OwnerName, err.Name)
|
err.ID, err.UID, err.OwnerName, err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this error as a ErrNotExist error
|
||||||
|
func (err ErrRepoNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// GetRepositoryByOwnerAndNameCtx returns the repository by given owner name and repo name
|
// GetRepositoryByOwnerAndNameCtx returns the repository by given owner name and repo name
|
||||||
func GetRepositoryByOwnerAndNameCtx(ctx context.Context, ownerName, repoName string) (*Repository, error) {
|
func GetRepositoryByOwnerAndNameCtx(ctx context.Context, ownerName, repoName string) (*Repository, error) {
|
||||||
var repo Repository
|
var repo Repository
|
||||||
|
|
|
@ -13,6 +13,7 @@ import (
|
||||||
"code.gitea.io/gitea/modules/json"
|
"code.gitea.io/gitea/modules/json"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
|
||||||
"xorm.io/xorm"
|
"xorm.io/xorm"
|
||||||
"xorm.io/xorm/convert"
|
"xorm.io/xorm/convert"
|
||||||
|
@ -33,6 +34,10 @@ func (err ErrUnitTypeNotExist) Error() string {
|
||||||
return fmt.Sprintf("Unit type does not exist: %s", err.UT.String())
|
return fmt.Sprintf("Unit type does not exist: %s", err.UT.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrUnitTypeNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// RepoUnit describes all units of a repository
|
// RepoUnit describes all units of a repository
|
||||||
type RepoUnit struct { //revive:disable-line:exported
|
type RepoUnit struct { //revive:disable-line:exported
|
||||||
ID int64
|
ID int64
|
||||||
|
|
|
@ -13,6 +13,7 @@ import (
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/modules/container"
|
"code.gitea.io/gitea/modules/container"
|
||||||
"code.gitea.io/gitea/modules/timeutil"
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
|
||||||
"xorm.io/builder"
|
"xorm.io/builder"
|
||||||
)
|
)
|
||||||
|
@ -55,6 +56,10 @@ func (err ErrTopicNotExist) Error() string {
|
||||||
return fmt.Sprintf("topic is not exist [name: %s]", err.Name)
|
return fmt.Sprintf("topic is not exist [name: %s]", err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrTopicNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ValidateTopic checks a topic by length and match pattern rules
|
// ValidateTopic checks a topic by length and match pattern rules
|
||||||
func ValidateTopic(topic string) bool {
|
func ValidateTopic(topic string) bool {
|
||||||
return len(topic) <= 35 && topicPattern.MatchString(topic)
|
return len(topic) <= 35 && topicPattern.MatchString(topic)
|
||||||
|
|
|
@ -63,6 +63,10 @@ func (err ErrReachLimitOfRepo) Error() string {
|
||||||
return fmt.Sprintf("user has reached maximum limit of repositories [limit: %d]", err.Limit)
|
return fmt.Sprintf("user has reached maximum limit of repositories [limit: %d]", err.Limit)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrReachLimitOfRepo) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
// ErrRepoAlreadyExist represents a "RepoAlreadyExist" kind of error.
|
// ErrRepoAlreadyExist represents a "RepoAlreadyExist" kind of error.
|
||||||
type ErrRepoAlreadyExist struct {
|
type ErrRepoAlreadyExist struct {
|
||||||
Uname string
|
Uname string
|
||||||
|
@ -79,6 +83,10 @@ func (err ErrRepoAlreadyExist) Error() string {
|
||||||
return fmt.Sprintf("repository already exists [uname: %s, name: %s]", err.Uname, err.Name)
|
return fmt.Sprintf("repository already exists [uname: %s, name: %s]", err.Uname, err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrRepoAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrRepoFilesAlreadyExist represents a "RepoFilesAlreadyExist" kind of error.
|
// ErrRepoFilesAlreadyExist represents a "RepoFilesAlreadyExist" kind of error.
|
||||||
type ErrRepoFilesAlreadyExist struct {
|
type ErrRepoFilesAlreadyExist struct {
|
||||||
Uname string
|
Uname string
|
||||||
|
@ -95,6 +103,10 @@ func (err ErrRepoFilesAlreadyExist) Error() string {
|
||||||
return fmt.Sprintf("repository files already exist [uname: %s, name: %s]", err.Uname, err.Name)
|
return fmt.Sprintf("repository files already exist [uname: %s, name: %s]", err.Uname, err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrRepoFilesAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// CheckCreateRepository check if could created a repository
|
// CheckCreateRepository check if could created a repository
|
||||||
func CheckCreateRepository(doer, u *user_model.User, name string, overwriteOrAdopt bool) error {
|
func CheckCreateRepository(doer, u *user_model.User, name string, overwriteOrAdopt bool) error {
|
||||||
if !doer.CanCreateRepo() {
|
if !doer.CanCreateRepo() {
|
||||||
|
|
|
@ -36,6 +36,10 @@ func (err ErrUploadNotExist) Error() string {
|
||||||
return fmt.Sprintf("attachment does not exist [id: %d, uuid: %s]", err.ID, err.UUID)
|
return fmt.Sprintf("attachment does not exist [id: %d, uuid: %s]", err.ID, err.UUID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrUploadNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// Upload represent a uploaded file to a repo to be deleted when moved
|
// Upload represent a uploaded file to a repo to be deleted when moved
|
||||||
type Upload struct {
|
type Upload struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
|
|
@ -30,6 +30,10 @@ func (err ErrWikiAlreadyExist) Error() string {
|
||||||
return fmt.Sprintf("wiki page already exists [title: %s]", err.Title)
|
return fmt.Sprintf("wiki page already exists [title: %s]", err.Title)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrWikiAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrWikiReservedName represents a reserved name error.
|
// ErrWikiReservedName represents a reserved name error.
|
||||||
type ErrWikiReservedName struct {
|
type ErrWikiReservedName struct {
|
||||||
Title string
|
Title string
|
||||||
|
@ -45,6 +49,10 @@ func (err ErrWikiReservedName) Error() string {
|
||||||
return fmt.Sprintf("wiki title is reserved: %s", err.Title)
|
return fmt.Sprintf("wiki title is reserved: %s", err.Title)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrWikiReservedName) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// ErrWikiInvalidFileName represents an invalid wiki file name.
|
// ErrWikiInvalidFileName represents an invalid wiki file name.
|
||||||
type ErrWikiInvalidFileName struct {
|
type ErrWikiInvalidFileName struct {
|
||||||
FileName string
|
FileName string
|
||||||
|
@ -60,6 +68,10 @@ func (err ErrWikiInvalidFileName) Error() string {
|
||||||
return fmt.Sprintf("Invalid wiki filename: %s", err.FileName)
|
return fmt.Sprintf("Invalid wiki filename: %s", err.FileName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrWikiInvalidFileName) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// WikiCloneLink returns clone URLs of repository wiki.
|
// WikiCloneLink returns clone URLs of repository wiki.
|
||||||
func (repo *Repository) WikiCloneLink() *CloneLink {
|
func (repo *Repository) WikiCloneLink() *CloneLink {
|
||||||
return repo.cloneLink(true)
|
return repo.cloneLink(true)
|
||||||
|
|
|
@ -40,6 +40,10 @@ func (err ErrEmailCharIsNotSupported) Error() string {
|
||||||
return fmt.Sprintf("e-mail address contains unsupported character [email: %s]", err.Email)
|
return fmt.Sprintf("e-mail address contains unsupported character [email: %s]", err.Email)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrEmailCharIsNotSupported) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// ErrEmailInvalid represents an error where the email address does not comply with RFC 5322
|
// ErrEmailInvalid represents an error where the email address does not comply with RFC 5322
|
||||||
// or has a leading '-' character
|
// or has a leading '-' character
|
||||||
type ErrEmailInvalid struct {
|
type ErrEmailInvalid struct {
|
||||||
|
@ -56,6 +60,10 @@ func (err ErrEmailInvalid) Error() string {
|
||||||
return fmt.Sprintf("e-mail invalid [email: %s]", err.Email)
|
return fmt.Sprintf("e-mail invalid [email: %s]", err.Email)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrEmailInvalid) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// ErrEmailAlreadyUsed represents a "EmailAlreadyUsed" kind of error.
|
// ErrEmailAlreadyUsed represents a "EmailAlreadyUsed" kind of error.
|
||||||
type ErrEmailAlreadyUsed struct {
|
type ErrEmailAlreadyUsed struct {
|
||||||
Email string
|
Email string
|
||||||
|
@ -71,6 +79,10 @@ func (err ErrEmailAlreadyUsed) Error() string {
|
||||||
return fmt.Sprintf("e-mail already in use [email: %s]", err.Email)
|
return fmt.Sprintf("e-mail already in use [email: %s]", err.Email)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrEmailAlreadyUsed) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrEmailAddressNotExist email address not exist
|
// ErrEmailAddressNotExist email address not exist
|
||||||
type ErrEmailAddressNotExist struct {
|
type ErrEmailAddressNotExist struct {
|
||||||
Email string
|
Email string
|
||||||
|
@ -86,6 +98,10 @@ func (err ErrEmailAddressNotExist) Error() string {
|
||||||
return fmt.Sprintf("Email address does not exist [email: %s]", err.Email)
|
return fmt.Sprintf("Email address does not exist [email: %s]", err.Email)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrEmailAddressNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrPrimaryEmailCannotDelete primary email address cannot be deleted
|
// ErrPrimaryEmailCannotDelete primary email address cannot be deleted
|
||||||
type ErrPrimaryEmailCannotDelete struct {
|
type ErrPrimaryEmailCannotDelete struct {
|
||||||
Email string
|
Email string
|
||||||
|
@ -101,6 +117,10 @@ func (err ErrPrimaryEmailCannotDelete) Error() string {
|
||||||
return fmt.Sprintf("Primary email address cannot be deleted [email: %s]", err.Email)
|
return fmt.Sprintf("Primary email address cannot be deleted [email: %s]", err.Email)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrPrimaryEmailCannotDelete) Unwrap() error {
|
||||||
|
return util.ErrInvalidArgument
|
||||||
|
}
|
||||||
|
|
||||||
// EmailAddress is the list of all email addresses of a user. It also contains the
|
// EmailAddress is the list of all email addresses of a user. It also contains the
|
||||||
// primary email address which is saved in user table.
|
// primary email address which is saved in user table.
|
||||||
type EmailAddress struct {
|
type EmailAddress struct {
|
||||||
|
|
|
@ -6,6 +6,8 @@ package user
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ____ ___
|
// ____ ___
|
||||||
|
@ -30,6 +32,11 @@ func (err ErrUserAlreadyExist) Error() string {
|
||||||
return fmt.Sprintf("user already exists [name: %s]", err.Name)
|
return fmt.Sprintf("user already exists [name: %s]", err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this error as a ErrExist error
|
||||||
|
func (err ErrUserAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrUserNotExist represents a "UserNotExist" kind of error.
|
// ErrUserNotExist represents a "UserNotExist" kind of error.
|
||||||
type ErrUserNotExist struct {
|
type ErrUserNotExist struct {
|
||||||
UID int64
|
UID int64
|
||||||
|
@ -47,6 +54,11 @@ func (err ErrUserNotExist) Error() string {
|
||||||
return fmt.Sprintf("user does not exist [uid: %d, name: %s, keyid: %d]", err.UID, err.Name, err.KeyID)
|
return fmt.Sprintf("user does not exist [uid: %d, name: %s, keyid: %d]", err.UID, err.Name, err.KeyID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this error as a ErrNotExist error
|
||||||
|
func (err ErrUserNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrUserProhibitLogin represents a "ErrUserProhibitLogin" kind of error.
|
// ErrUserProhibitLogin represents a "ErrUserProhibitLogin" kind of error.
|
||||||
type ErrUserProhibitLogin struct {
|
type ErrUserProhibitLogin struct {
|
||||||
UID int64
|
UID int64
|
||||||
|
@ -63,6 +75,11 @@ func (err ErrUserProhibitLogin) Error() string {
|
||||||
return fmt.Sprintf("user is not allowed login [uid: %d, name: %s]", err.UID, err.Name)
|
return fmt.Sprintf("user is not allowed login [uid: %d, name: %s]", err.UID, err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this error as a ErrPermission error
|
||||||
|
func (err ErrUserProhibitLogin) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
||||||
// ErrUserInactive represents a "ErrUserInactive" kind of error.
|
// ErrUserInactive represents a "ErrUserInactive" kind of error.
|
||||||
type ErrUserInactive struct {
|
type ErrUserInactive struct {
|
||||||
UID int64
|
UID int64
|
||||||
|
@ -78,3 +95,8 @@ func IsErrUserInactive(err error) bool {
|
||||||
func (err ErrUserInactive) Error() string {
|
func (err ErrUserInactive) Error() string {
|
||||||
return fmt.Sprintf("user is inactive [uid: %d, name: %s]", err.UID, err.Name)
|
return fmt.Sprintf("user is inactive [uid: %d, name: %s]", err.UID, err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unwrap unwraps this error as a ErrPermission error
|
||||||
|
func (err ErrUserInactive) Unwrap() error {
|
||||||
|
return util.ErrPermissionDenied
|
||||||
|
}
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
|
||||||
"xorm.io/builder"
|
"xorm.io/builder"
|
||||||
)
|
)
|
||||||
|
@ -31,6 +32,10 @@ func (err ErrExternalLoginUserAlreadyExist) Error() string {
|
||||||
return fmt.Sprintf("external login user already exists [externalID: %s, userID: %d, loginSourceID: %d]", err.ExternalID, err.UserID, err.LoginSourceID)
|
return fmt.Sprintf("external login user already exists [externalID: %s, userID: %d, loginSourceID: %d]", err.ExternalID, err.UserID, err.LoginSourceID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrExternalLoginUserAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrExternalLoginUserNotExist represents a "ExternalLoginUserNotExist" kind of error.
|
// ErrExternalLoginUserNotExist represents a "ExternalLoginUserNotExist" kind of error.
|
||||||
type ErrExternalLoginUserNotExist struct {
|
type ErrExternalLoginUserNotExist struct {
|
||||||
UserID int64
|
UserID int64
|
||||||
|
@ -47,6 +52,10 @@ func (err ErrExternalLoginUserNotExist) Error() string {
|
||||||
return fmt.Sprintf("external login user link does not exists [userID: %d, loginSourceID: %d]", err.UserID, err.LoginSourceID)
|
return fmt.Sprintf("external login user link does not exists [userID: %d, loginSourceID: %d]", err.UserID, err.LoginSourceID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrExternalLoginUserNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ExternalLoginUser makes the connecting between some existing user and additional external login sources
|
// ExternalLoginUser makes the connecting between some existing user and additional external login sources
|
||||||
type ExternalLoginUser struct {
|
type ExternalLoginUser struct {
|
||||||
ExternalID string `xorm:"pk NOT NULL"`
|
ExternalID string `xorm:"pk NOT NULL"`
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrOpenIDNotExist openid is not known
|
// ErrOpenIDNotExist openid is not known
|
||||||
|
@ -65,6 +66,10 @@ func (err ErrOpenIDAlreadyUsed) Error() string {
|
||||||
return fmt.Sprintf("OpenID already in use [oid: %s]", err.OpenID)
|
return fmt.Sprintf("OpenID already in use [oid: %s]", err.OpenID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrOpenIDAlreadyUsed) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// AddUserOpenID adds an pre-verified/normalized OpenID URI to given user.
|
// AddUserOpenID adds an pre-verified/normalized OpenID URI to given user.
|
||||||
// NOTE: make sure openid.URI is normalized already
|
// NOTE: make sure openid.URI is normalized already
|
||||||
func AddUserOpenID(ctx context.Context, openid *UserOpenID) error {
|
func AddUserOpenID(ctx context.Context, openid *UserOpenID) error {
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrUserRedirectNotExist represents a "UserRedirectNotExist" kind of error.
|
// ErrUserRedirectNotExist represents a "UserRedirectNotExist" kind of error.
|
||||||
|
@ -27,6 +28,10 @@ func (err ErrUserRedirectNotExist) Error() string {
|
||||||
return fmt.Sprintf("user redirect does not exist [name: %s]", err.Name)
|
return fmt.Sprintf("user redirect does not exist [name: %s]", err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrUserRedirectNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// Redirect represents that a user name should be redirected to another
|
// Redirect represents that a user name should be redirected to another
|
||||||
type Redirect struct {
|
type Redirect struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
|
|
@ -41,6 +41,10 @@ func (err ErrWebhookNotExist) Error() string {
|
||||||
return fmt.Sprintf("webhook does not exist [id: %d]", err.ID)
|
return fmt.Sprintf("webhook does not exist [id: %d]", err.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrWebhookNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrHookTaskNotExist represents a "HookTaskNotExist" kind of error.
|
// ErrHookTaskNotExist represents a "HookTaskNotExist" kind of error.
|
||||||
type ErrHookTaskNotExist struct {
|
type ErrHookTaskNotExist struct {
|
||||||
HookID int64
|
HookID int64
|
||||||
|
@ -57,6 +61,10 @@ func (err ErrHookTaskNotExist) Error() string {
|
||||||
return fmt.Sprintf("hook task does not exist [hook: %d, uuid: %s]", err.HookID, err.UUID)
|
return fmt.Sprintf("hook task does not exist [hook: %d, uuid: %s]", err.HookID, err.UUID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrHookTaskNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// HookContentType is the content type of a web hook
|
// HookContentType is the content type of a web hook
|
||||||
type HookContentType int
|
type HookContentType int
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,8 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrExecTimeout error when exec timed out
|
// ErrExecTimeout error when exec timed out
|
||||||
|
@ -41,6 +43,10 @@ func (err ErrNotExist) Error() string {
|
||||||
return fmt.Sprintf("object does not exist [id: %s, rel_path: %s]", err.ID, err.RelPath)
|
return fmt.Sprintf("object does not exist [id: %s, rel_path: %s]", err.ID, err.RelPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrBadLink entry.FollowLink error
|
// ErrBadLink entry.FollowLink error
|
||||||
type ErrBadLink struct {
|
type ErrBadLink struct {
|
||||||
Name string
|
Name string
|
||||||
|
@ -87,6 +93,10 @@ func (err ErrBranchNotExist) Error() string {
|
||||||
return fmt.Sprintf("branch does not exist [name: %s]", err.Name)
|
return fmt.Sprintf("branch does not exist [name: %s]", err.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrBranchNotExist) Unwrap() error {
|
||||||
|
return util.ErrNotExist
|
||||||
|
}
|
||||||
|
|
||||||
// ErrPushOutOfDate represents an error if merging fails due to unrelated histories
|
// ErrPushOutOfDate represents an error if merging fails due to unrelated histories
|
||||||
type ErrPushOutOfDate struct {
|
type ErrPushOutOfDate struct {
|
||||||
StdOut string
|
StdOut string
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Copyright 2022 The Gitea Authors.
|
// Copyright 2022 The Gitea Authors.
|
||||||
// Copyright 2015 Unknwon. Licensed under the Apache License, Version 2.0
|
// Copyright 2015 https://github.com/unknwon. Licensed under the Apache License, Version 2.0
|
||||||
|
|
||||||
package paginator
|
package paginator
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Copyright 2022 The Gitea Authors.
|
// Copyright 2022 The Gitea Authors.
|
||||||
// Copyright 2015 Unknwon. Licensed under the Apache License, Version 2.0
|
// Copyright 2015 https://github.com/unknwon. Licensed under the Apache License, Version 2.0
|
||||||
|
|
||||||
package paginator
|
package paginator
|
||||||
|
|
||||||
|
|
|
@ -309,7 +309,7 @@ func TestRegExp_mentionPattern(t *testing.T) {
|
||||||
pat string
|
pat string
|
||||||
exp string
|
exp string
|
||||||
}{
|
}{
|
||||||
{"@Unknwon", "@Unknwon"},
|
{"@User", "@User"},
|
||||||
{"@ANT_123", "@ANT_123"},
|
{"@ANT_123", "@ANT_123"},
|
||||||
{"@xxx-DiN0-z-A..uru..s-xxx", "@xxx-DiN0-z-A..uru..s-xxx"},
|
{"@xxx-DiN0-z-A..uru..s-xxx", "@xxx-DiN0-z-A..uru..s-xxx"},
|
||||||
{" @lol ", "@lol"},
|
{" @lol ", "@lol"},
|
||||||
|
|
|
@ -4,9 +4,11 @@
|
||||||
|
|
||||||
package i18n
|
package i18n
|
||||||
|
|
||||||
import "errors"
|
import (
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ErrLocaleAlreadyExist = errors.New("lang already exists")
|
ErrLocaleAlreadyExist = util.SilentWrap{Message: "lang already exists", Err: util.ErrAlreadyExist}
|
||||||
ErrUncertainArguments = errors.New("arguments to i18n should not contain uncertain slices")
|
ErrUncertainArguments = util.SilentWrap{Message: "arguments to i18n should not contain uncertain slices", Err: util.ErrInvalidArgument}
|
||||||
)
|
)
|
||||||
|
|
37
modules/util/error.go
Normal file
37
modules/util/error.go
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
// Copyright 2022 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 (
|
||||||
|
"errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Common Errors forming the base of our error system
|
||||||
|
//
|
||||||
|
// Many Errors returned by Gitea can be tested against these errors
|
||||||
|
// using errors.Is.
|
||||||
|
var (
|
||||||
|
ErrInvalidArgument = errors.New("invalid argument")
|
||||||
|
ErrPermissionDenied = errors.New("permission denied")
|
||||||
|
ErrAlreadyExist = errors.New("resource already exists")
|
||||||
|
ErrNotExist = errors.New("resource does not exist")
|
||||||
|
)
|
||||||
|
|
||||||
|
// SilentWrap provides a simple wrapper for a wrapped error where the wrapped error message plays no part in the error message
|
||||||
|
// Especially useful for "untyped" errors created with "errors.New(…)" that can be classified as 'invalid argument', 'permission denied', 'exists already', or 'does not exist'
|
||||||
|
type SilentWrap struct {
|
||||||
|
Message string
|
||||||
|
Err error
|
||||||
|
}
|
||||||
|
|
||||||
|
// Error returns the message
|
||||||
|
func (w SilentWrap) Error() string {
|
||||||
|
return w.Message
|
||||||
|
}
|
||||||
|
|
||||||
|
// Unwrap returns the underlying error
|
||||||
|
func (w SilentWrap) Unwrap() error {
|
||||||
|
return w.Err
|
||||||
|
}
|
|
@ -268,8 +268,11 @@ users=Uživatelé
|
||||||
organizations=Organizace
|
organizations=Organizace
|
||||||
search=Vyhledat
|
search=Vyhledat
|
||||||
code=Zdrojový kód
|
code=Zdrojový kód
|
||||||
|
search.type.tooltip=Druh vyhledávání
|
||||||
search.fuzzy=Fuzzy
|
search.fuzzy=Fuzzy
|
||||||
|
search.fuzzy.tooltip=Zahrnout výsledky, které také úzce odpovídají hledanému výrazu
|
||||||
search.match=Shoda
|
search.match=Shoda
|
||||||
|
search.match.tooltip=Zahrnout pouze výsledky, které odpovídají přesnému hledanému výrazu
|
||||||
code_search_unavailable=V současné době není vyhledávání kódu dostupné. Obraťte se na správce webu.
|
code_search_unavailable=V současné době není vyhledávání kódu dostupné. Obraťte se na správce webu.
|
||||||
repo_no_results=Nebyly nalezeny žádné odpovídající repozitáře.
|
repo_no_results=Nebyly nalezeny žádné odpovídající repozitáře.
|
||||||
user_no_results=Nebyly nalezeni žádní odpovídající uživatelé.
|
user_no_results=Nebyly nalezeni žádní odpovídající uživatelé.
|
||||||
|
@ -507,6 +510,7 @@ activity=Veřejná aktivita
|
||||||
followers=Sledující
|
followers=Sledující
|
||||||
starred=Oblíbené repozitáře
|
starred=Oblíbené repozitáře
|
||||||
watched=Sledované repozitáře
|
watched=Sledované repozitáře
|
||||||
|
code=Kód
|
||||||
projects=Projekty
|
projects=Projekty
|
||||||
following=Sledovaní
|
following=Sledovaní
|
||||||
follow=Sledovat
|
follow=Sledovat
|
||||||
|
@ -1763,8 +1767,11 @@ activity.git_stats_deletion_n=%d odebrání
|
||||||
|
|
||||||
search=Vyhledat
|
search=Vyhledat
|
||||||
search.search_repo=Hledat repozitář
|
search.search_repo=Hledat repozitář
|
||||||
|
search.type.tooltip=Druh vyhledávání
|
||||||
search.fuzzy=Fuzzy
|
search.fuzzy=Fuzzy
|
||||||
|
search.fuzzy.tooltip=Zahrnout výsledky, které také úzce odpovídají hledanému výrazu
|
||||||
search.match=Shoda
|
search.match=Shoda
|
||||||
|
search.match.tooltip=Zahrnout pouze výsledky, které odpovídají přesnému hledanému výrazu
|
||||||
search.results=Výsledky hledání „%s“ v <a href="%s">%s</a>
|
search.results=Výsledky hledání „%s“ v <a href="%s">%s</a>
|
||||||
search.code_no_results=Nebyl nalezen žádný zdrojový kód odpovídající hledanému výrazu.
|
search.code_no_results=Nebyl nalezen žádný zdrojový kód odpovídající hledanému výrazu.
|
||||||
search.code_search_unavailable=V současné době není vyhledávání kódu dostupné. Obraťte se na správce webu.
|
search.code_search_unavailable=V současné době není vyhledávání kódu dostupné. Obraťte se na správce webu.
|
||||||
|
@ -2310,6 +2317,7 @@ create_org=Vytvořit organizaci
|
||||||
repo_updated=Upraveno
|
repo_updated=Upraveno
|
||||||
people=Lidé
|
people=Lidé
|
||||||
teams=Týmy
|
teams=Týmy
|
||||||
|
code=Kód
|
||||||
lower_members=členové
|
lower_members=členové
|
||||||
lower_repositories=repozitáře
|
lower_repositories=repozitáře
|
||||||
create_new_team=Nový tým
|
create_new_team=Nový tým
|
||||||
|
@ -2871,6 +2879,8 @@ config.access_log_template=Šablona
|
||||||
config.xorm_log_mode=Režim logování XORM
|
config.xorm_log_mode=Režim logování XORM
|
||||||
config.xorm_log_sql=Logovat SQL
|
config.xorm_log_sql=Logovat SQL
|
||||||
|
|
||||||
|
config.get_setting_failed=Získání nastavení %s se nezdařilo
|
||||||
|
config.set_setting_failed=Nastavení %s se nezdařilo
|
||||||
|
|
||||||
monitor.cron=Naplánované úlohy
|
monitor.cron=Naplánované úlohy
|
||||||
monitor.name=Název
|
monitor.name=Název
|
||||||
|
@ -3035,6 +3045,9 @@ pin=Připnout upozornění
|
||||||
mark_as_read=Označit jako přečtené
|
mark_as_read=Označit jako přečtené
|
||||||
mark_as_unread=Označit jako nepřečtené
|
mark_as_unread=Označit jako nepřečtené
|
||||||
mark_all_as_read=Označit vše jako přečtené
|
mark_all_as_read=Označit vše jako přečtené
|
||||||
|
subscriptions=Odběry
|
||||||
|
watching=Sledované
|
||||||
|
no_subscriptions=Žádné odběry
|
||||||
|
|
||||||
[gpg]
|
[gpg]
|
||||||
default_key=Podepsáno výchozím klíčem
|
default_key=Podepsáno výchozím klíčem
|
||||||
|
|
|
@ -149,19 +149,9 @@ func Install(ctx *context.Context) {
|
||||||
|
|
||||||
// Server and other services settings
|
// Server and other services settings
|
||||||
form.OfflineMode = setting.OfflineMode
|
form.OfflineMode = setting.OfflineMode
|
||||||
disableGravatarSetting, _ := system_model.GetSetting(system_model.KeyPictureDisableGravatar)
|
form.DisableGravatar = false // when installing, there is no database connection so that given a default value
|
||||||
if disableGravatarSetting != nil {
|
form.EnableFederatedAvatar = false // when installing, there is no database connection so that given a default value
|
||||||
form.DisableGravatar = disableGravatarSetting.GetValueBool()
|
|
||||||
} else {
|
|
||||||
form.DisableGravatar = false
|
|
||||||
}
|
|
||||||
|
|
||||||
enableFederatedAvatarSetting, _ := system_model.GetSetting(system_model.KeyPictureEnableFederatedAvatar)
|
|
||||||
if enableFederatedAvatarSetting != nil {
|
|
||||||
form.EnableFederatedAvatar = enableFederatedAvatarSetting.GetValueBool()
|
|
||||||
} else {
|
|
||||||
form.EnableFederatedAvatar = false
|
|
||||||
}
|
|
||||||
form.EnableOpenIDSignIn = setting.Service.EnableOpenIDSignIn
|
form.EnableOpenIDSignIn = setting.Service.EnableOpenIDSignIn
|
||||||
form.EnableOpenIDSignUp = setting.Service.EnableOpenIDSignUp
|
form.EnableOpenIDSignUp = setting.Service.EnableOpenIDSignUp
|
||||||
form.DisableRegistration = setting.Service.DisableRegistration
|
form.DisableRegistration = setting.Service.DisableRegistration
|
||||||
|
@ -385,7 +375,6 @@ func SubmitInstall(ctx *context.Context) {
|
||||||
ctx.RenderWithErr(ctx.Tr("install.invalid_db_setting", err), tplInstall, &form)
|
ctx.RenderWithErr(ctx.Tr("install.invalid_db_setting", err), tplInstall, &form)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
db.UnsetDefaultEngine()
|
|
||||||
|
|
||||||
// Save settings.
|
// Save settings.
|
||||||
cfg := ini.Empty()
|
cfg := ini.Empty()
|
||||||
|
@ -518,6 +507,9 @@ func SubmitInstall(ctx *context.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// unset default engine before reload database setting
|
||||||
|
db.UnsetDefaultEngine()
|
||||||
|
|
||||||
// ---- All checks are passed
|
// ---- All checks are passed
|
||||||
|
|
||||||
// Reload settings (and re-initialize database connection)
|
// Reload settings (and re-initialize database connection)
|
||||||
|
|
|
@ -39,6 +39,10 @@ func (err ErrForkAlreadyExist) Error() string {
|
||||||
return fmt.Sprintf("repository is already forked by user [uname: %s, repo path: %s, fork path: %s]", err.Uname, err.RepoName, err.ForkName)
|
return fmt.Sprintf("repository is already forked by user [uname: %s, repo path: %s, fork path: %s]", err.Uname, err.RepoName, err.ForkName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (err ErrForkAlreadyExist) Unwrap() error {
|
||||||
|
return util.ErrAlreadyExist
|
||||||
|
}
|
||||||
|
|
||||||
// ForkRepoOptions contains the fork repository options
|
// ForkRepoOptions contains the fork repository options
|
||||||
type ForkRepoOptions struct {
|
type ForkRepoOptions struct {
|
||||||
BaseRepo *repo_model.Repository
|
BaseRepo *repo_model.Repository
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
{{$defaultBranch := $.root.BranchName}}{{if and .root.IsViewTag (not .noTag)}}{{$defaultBranch = .root.TagName}}{{end}}{{if eq $defaultBranch ""}}{{$defaultBranch = $.root.Repository.DefaultBranch}}{{end}}
|
{{$defaultBranch := $.root.BranchName}}{{if and .root.IsViewTag (not .noTag)}}{{$defaultBranch = .root.TagName}}{{end}}{{if eq $defaultBranch ""}}{{$defaultBranch = $.root.Repository.DefaultBranch}}{{end}}
|
||||||
{{$type := ""}}{{if and .root.IsViewTag (not .noTag)}}{{$type = "tag"}}{{else if .root.IsViewBranch}}{{$type = "branch"}}{{else}}{{$type = "tree"}}{{end}}
|
{{$type := ""}}{{if and .root.IsViewTag (not .noTag)}}{{$type = "tag"}}{{else if .root.IsViewBranch}}{{$type = "branch"}}{{else}}{{$type = "tree"}}{{end}}
|
||||||
{{$showBranchesInDropdown := not .root.HideBranchesInDropdown}}
|
{{$showBranchesInDropdown := not .root.HideBranchesInDropdown}}
|
||||||
<div class="fitted item choose reference{{if not $release}} mr-1{{end}}">
|
<div class="fitted item choose reference">
|
||||||
<div class="ui floating filter dropdown custom"
|
<div class="ui floating filter dropdown custom"
|
||||||
data-branch-form="{{if $.branchForm}}{{$.branchForm}}{{end}}"
|
data-branch-form="{{if $.branchForm}}{{$.branchForm}}{{end}}"
|
||||||
data-can-create-branch="{{if .canCreateBranch}}{{.canCreateBranch}}{{else}}{{.root.CanCreateBranch}}{{end}}"
|
data-can-create-branch="{{if .canCreateBranch}}{{.canCreateBranch}}{{else}}{{.root.CanCreateBranch}}{{end}}"
|
||||||
|
@ -14,19 +14,19 @@
|
||||||
data-branch-url-suffix="{{if .branchURLSuffix}}{{.branchURLSuffix}}{{else}}{{if $.root.TreePath}}/{{PathEscapeSegments $.root.TreePath}}{{end}}{{end}}"
|
data-branch-url-suffix="{{if .branchURLSuffix}}{{.branchURLSuffix}}{{else}}{{if $.root.TreePath}}/{{PathEscapeSegments $.root.TreePath}}{{end}}{{end}}"
|
||||||
data-tag-url-prefix="{{if .tagURLPrefix}}{{.tagURLPrefix}}{{else if $release}}{{$.root.RepoLink}}/compare/{{else}}{{$.root.RepoLink}}/{{if $.root.PageIsCommits}}commits{{else}}src{{end}}/tag/{{end}}"
|
data-tag-url-prefix="{{if .tagURLPrefix}}{{.tagURLPrefix}}{{else if $release}}{{$.root.RepoLink}}/compare/{{else}}{{$.root.RepoLink}}/{{if $.root.PageIsCommits}}commits{{else}}src{{end}}/tag/{{end}}"
|
||||||
data-tag-url-suffix="{{if .tagURLSuffix}}{{.tagURLSuffix}}{{else if $release}}...{{if $release.IsDraft}}{{PathEscapeSegments $release.Target}}{{else}}{{if $release.TagName}}{{PathEscapeSegments $release.TagName}}{{else}}{{PathEscapeSegments $release.Sha1}}{{end}}{{end}}{{else}}{{if $.root.TreePath}}/{{PathEscapeSegments $.root.TreePath}}{{end}}{{end}}">
|
data-tag-url-suffix="{{if .tagURLSuffix}}{{.tagURLSuffix}}{{else if $release}}...{{if $release.IsDraft}}{{PathEscapeSegments $release.Target}}{{else}}{{if $release.TagName}}{{PathEscapeSegments $release.TagName}}{{else}}{{PathEscapeSegments $release.Sha1}}{{end}}{{end}}{{else}}{{if $.root.TreePath}}/{{PathEscapeSegments $.root.TreePath}}{{end}}{{end}}">
|
||||||
<div class="branch-dropdown-button ellipsis ui basic small compact button" @click="menuVisible = !menuVisible" @keyup.enter="menuVisible = !menuVisible">
|
<button class="branch-dropdown-button ellipsis ui basic small compact button df" @click="menuVisible = !menuVisible" @keyup.enter="menuVisible = !menuVisible">
|
||||||
<span class="text">
|
<span class="text df ac mr-2">
|
||||||
{{if $release}}
|
{{if $release}}
|
||||||
{{.root.locale.Tr "repo.release.compare"}}
|
{{.root.locale.Tr "repo.release.compare"}}
|
||||||
{{else}}
|
{{else}}
|
||||||
<span :class="{visible: isViewTag}" v-if="isViewTag" {{if not (eq $type "tag")}}v-cloak{{end}}>{{svg "octicon-tag"}} {{.root.locale.Tr "repo.tag"}}:</span>
|
<span :class="{visible: isViewTag}" v-if="isViewTag" {{if not (eq $type "tag")}}v-cloak{{end}}>{{svg "octicon-tag"}}</span>
|
||||||
<span :class="{visible: isViewBranch}" v-if="isViewBranch" {{if not (eq $type "branch")}}v-cloak{{end}}>{{svg "octicon-git-branch"}} {{.root.locale.Tr "repo.branch"}}:</span>
|
<span :class="{visible: isViewBranch}" v-if="isViewBranch" {{if not (eq $type "branch")}}v-cloak{{end}}>{{svg "octicon-git-branch"}}</span>
|
||||||
<span :class="{visible: isViewTree}" v-if="isViewTree" {{if not (eq $type "tree")}}v-cloak{{end}}>{{svg "octicon-git-branch"}} {{.root.locale.Tr "repo.tree"}}:</span>
|
<span :class="{visible: isViewTree}" v-if="isViewTree" {{if not (eq $type "tree")}}v-cloak{{end}}>{{svg "octicon-git-branch"}}</span>
|
||||||
<strong ref="dropdownRefName">{{if and .root.IsViewTag (not .noTag)}}{{.root.TagName}}{{else if .root.IsViewBranch}}{{.root.BranchName}}{{else}}{{ShortSha .root.CommitID}}{{end}}</strong>
|
<strong ref="dropdownRefName" class="ml-3">{{if and .root.IsViewTag (not .noTag)}}{{.root.TagName}}{{else if .root.IsViewBranch}}{{.root.BranchName}}{{else}}{{ShortSha .root.CommitID}}{{end}}</strong>
|
||||||
{{end}}
|
{{end}}
|
||||||
</span>
|
</span>
|
||||||
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
|
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
|
||||||
</div>
|
</button>
|
||||||
<div class="data" style="display: none" data-mode="{{if or .root.IsViewTag .isTag}}tags{{else}}branches{{end}}">
|
<div class="data" style="display: none" data-mode="{{if or .root.IsViewTag .isTag}}tags{{else}}branches{{end}}">
|
||||||
{{if $showBranchesInDropdown}}
|
{{if $showBranchesInDropdown}}
|
||||||
{{range .root.Branches}}
|
{{range .root.Branches}}
|
||||||
|
|
|
@ -102,7 +102,7 @@
|
||||||
</button>
|
</button>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{if ne $n 0}}
|
{{if ne $n 0}}
|
||||||
<span class="ui breadcrumb repo-path"><a class="section" href="{{.RepoLink}}/src/{{.BranchNameSubURL}}" title="{{.Repository.Name}}">{{EllipsisString .Repository.Name 30}}</a>{{range $i, $v := .TreeNames}}<span class="divider">/</span>{{if eq $i $l}}<span class="active section" title="{{$v}}">{{EllipsisString $v 30}}</span>{{else}}{{$p := index $.Paths $i}}<span class="section"><a href="{{$.BranchLink}}/{{PathEscapeSegments $p}}" title="{{$v}}">{{EllipsisString $v 30}}</a></span>{{end}}{{end}}</span>
|
<span class="ui breadcrumb repo-path ml-2"><a class="section" href="{{.RepoLink}}/src/{{.BranchNameSubURL}}" title="{{.Repository.Name}}">{{EllipsisString .Repository.Name 30}}</a>{{range $i, $v := .TreeNames}}<span class="divider">/</span>{{if eq $i $l}}<span class="active section" title="{{$v}}">{{EllipsisString $v 30}}</span>{{else}}{{$p := index $.Paths $i}}<span class="section"><a href="{{$.BranchLink}}/{{PathEscapeSegments $p}}" title="{{$v}}">{{EllipsisString $v 30}}</a></span>{{end}}{{end}}</span>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
<div class="df ac">
|
<div class="df ac">
|
||||||
|
|
|
@ -24,7 +24,6 @@ export default defineConfig({
|
||||||
open: false,
|
open: false,
|
||||||
allowOnly: true,
|
allowOnly: true,
|
||||||
passWithNoTests: true,
|
passWithNoTests: true,
|
||||||
globals: true,
|
|
||||||
watch: false,
|
watch: false,
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import {describe, expect, test} from 'vitest';
|
||||||
import {strSubMatch, calcMatchedWeight, filterRepoFilesWeighted} from './repo-findfile.js';
|
import {strSubMatch, calcMatchedWeight, filterRepoFilesWeighted} from './repo-findfile.js';
|
||||||
|
|
||||||
describe('Repo Find Files', () => {
|
describe('Repo Find Files', () => {
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import {expect, test} from 'vitest';
|
||||||
import {svg} from './svg.js';
|
import {svg} from './svg.js';
|
||||||
|
|
||||||
test('svg', () => {
|
test('svg', () => {
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import {expect, test} from 'vitest';
|
||||||
import {
|
import {
|
||||||
basename, extname, isObject, uniq, stripTags, joinPaths, parseIssueHref,
|
basename, extname, isObject, uniq, stripTags, joinPaths, parseIssueHref,
|
||||||
prettyNumber, parseUrl,
|
prettyNumber, parseUrl,
|
||||||
|
|
Loading…
Add table
Reference in a new issue