mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	Same perl replacement as https://github.com/go-gitea/gitea/pull/25686 but for 1.20 to ease future backporting.
This commit is contained in:
		| @@ -25,7 +25,7 @@ import ( | |||||||
|  |  | ||||||
| var optionLogVerbose bool | var optionLogVerbose bool | ||||||
|  |  | ||||||
| func logVerbose(msg string, args ...interface{}) { | func logVerbose(msg string, args ...any) { | ||||||
| 	if optionLogVerbose { | 	if optionLogVerbose { | ||||||
| 		log.Printf(msg, args...) | 		log.Printf(msg, args...) | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -63,7 +63,7 @@ Outputs to 'cert.pem' and 'key.pem' and will overwrite existing files.`, | |||||||
| 	}, | 	}, | ||||||
| } | } | ||||||
|  |  | ||||||
| func publicKey(priv interface{}) interface{} { | func publicKey(priv any) any { | ||||||
| 	switch k := priv.(type) { | 	switch k := priv.(type) { | ||||||
| 	case *rsa.PrivateKey: | 	case *rsa.PrivateKey: | ||||||
| 		return &k.PublicKey | 		return &k.PublicKey | ||||||
| @@ -74,7 +74,7 @@ func publicKey(priv interface{}) interface{} { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func pemBlockForKey(priv interface{}) *pem.Block { | func pemBlockForKey(priv any) *pem.Block { | ||||||
| 	switch k := priv.(type) { | 	switch k := priv.(type) { | ||||||
| 	case *rsa.PrivateKey: | 	case *rsa.PrivateKey: | ||||||
| 		return &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(k)} | 		return &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(k)} | ||||||
| @@ -94,7 +94,7 @@ func runCert(c *cli.Context) error { | |||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var priv interface{} | 	var priv any | ||||||
| 	var err error | 	var err error | ||||||
| 	switch c.String("ecdsa-curve") { | 	switch c.String("ecdsa-curve") { | ||||||
| 	case "": | 	case "": | ||||||
|   | |||||||
| @@ -161,7 +161,7 @@ It can be used for backup and capture Gitea server image to send to maintainer`, | |||||||
| 	}, | 	}, | ||||||
| } | } | ||||||
|  |  | ||||||
| func fatal(format string, args ...interface{}) { | func fatal(format string, args ...any) { | ||||||
| 	fmt.Fprintf(os.Stderr, format+"\n", args...) | 	fmt.Fprintf(os.Stderr, format+"\n", args...) | ||||||
| 	log.Fatal(format, args...) | 	log.Fatal(format, args...) | ||||||
| } | } | ||||||
| @@ -236,7 +236,7 @@ func runDump(ctx *cli.Context) error { | |||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var iface interface{} | 	var iface any | ||||||
| 	if fileName == "-" { | 	if fileName == "-" { | ||||||
| 		iface, err = archiver.ByExtension(fmt.Sprintf(".%s", outType)) | 		iface, err = archiver.ByExtension(fmt.Sprintf(".%s", outType)) | ||||||
| 	} else { | 	} else { | ||||||
|   | |||||||
| @@ -178,7 +178,7 @@ func runAddConnLogger(c *cli.Context) error { | |||||||
| 	defer cancel() | 	defer cancel() | ||||||
|  |  | ||||||
| 	setup(ctx, c.Bool("debug")) | 	setup(ctx, c.Bool("debug")) | ||||||
| 	vals := map[string]interface{}{} | 	vals := map[string]any{} | ||||||
| 	mode := "conn" | 	mode := "conn" | ||||||
| 	vals["net"] = "tcp" | 	vals["net"] = "tcp" | ||||||
| 	if c.IsSet("protocol") { | 	if c.IsSet("protocol") { | ||||||
| @@ -208,7 +208,7 @@ func runAddFileLogger(c *cli.Context) error { | |||||||
| 	defer cancel() | 	defer cancel() | ||||||
|  |  | ||||||
| 	setup(ctx, c.Bool("debug")) | 	setup(ctx, c.Bool("debug")) | ||||||
| 	vals := map[string]interface{}{} | 	vals := map[string]any{} | ||||||
| 	mode := "file" | 	mode := "file" | ||||||
| 	if c.IsSet("filename") { | 	if c.IsSet("filename") { | ||||||
| 		vals["filename"] = c.String("filename") | 		vals["filename"] = c.String("filename") | ||||||
| @@ -236,7 +236,7 @@ func runAddFileLogger(c *cli.Context) error { | |||||||
| 	return commonAddLogger(c, mode, vals) | 	return commonAddLogger(c, mode, vals) | ||||||
| } | } | ||||||
|  |  | ||||||
| func commonAddLogger(c *cli.Context, mode string, vals map[string]interface{}) error { | func commonAddLogger(c *cli.Context, mode string, vals map[string]any) error { | ||||||
| 	if len(c.String("level")) > 0 { | 	if len(c.String("level")) > 0 { | ||||||
| 		vals["level"] = log.LevelFromString(c.String("level")).String() | 		vals["level"] = log.LevelFromString(c.String("level")).String() | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -95,7 +95,7 @@ var ( | |||||||
|  |  | ||||||
| // fail prints message to stdout, it's mainly used for git serv and git hook commands. | // fail prints message to stdout, it's mainly used for git serv and git hook commands. | ||||||
| // The output will be passed to git client and shown to user. | // The output will be passed to git client and shown to user. | ||||||
| func fail(ctx context.Context, userMessage, logMsgFmt string, args ...interface{}) error { | func fail(ctx context.Context, userMessage, logMsgFmt string, args ...any) error { | ||||||
| 	if userMessage == "" { | 	if userMessage == "" { | ||||||
| 		userMessage = "Internal Server Error (no specific error)" | 		userMessage = "Internal Server Error (no specific error)" | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -44,7 +44,7 @@ func init() { | |||||||
| // TranslatableMessage represents JSON struct that can be translated with a Locale | // TranslatableMessage represents JSON struct that can be translated with a Locale | ||||||
| type TranslatableMessage struct { | type TranslatableMessage struct { | ||||||
| 	Format string | 	Format string | ||||||
| 	Args   []interface{} `json:"omitempty"` | 	Args   []any `json:"omitempty"` | ||||||
| } | } | ||||||
|  |  | ||||||
| // LoadRepo loads repository of the task | // LoadRepo loads repository of the task | ||||||
|   | |||||||
| @@ -47,7 +47,7 @@ var sshOpLocker sync.Mutex | |||||||
| // AuthorizedStringForKey creates the authorized keys string appropriate for the provided key | // AuthorizedStringForKey creates the authorized keys string appropriate for the provided key | ||||||
| func AuthorizedStringForKey(key *PublicKey) string { | func AuthorizedStringForKey(key *PublicKey) string { | ||||||
| 	sb := &strings.Builder{} | 	sb := &strings.Builder{} | ||||||
| 	_ = setting.SSH.AuthorizedKeysCommandTemplateTemplate.Execute(sb, map[string]interface{}{ | 	_ = setting.SSH.AuthorizedKeysCommandTemplateTemplate.Execute(sb, map[string]any{ | ||||||
| 		"AppPath":     util.ShellEscape(setting.AppPath), | 		"AppPath":     util.ShellEscape(setting.AppPath), | ||||||
| 		"AppWorkPath": util.ShellEscape(setting.AppWorkPath), | 		"AppWorkPath": util.ShellEscape(setting.AppWorkPath), | ||||||
| 		"CustomConf":  util.ShellEscape(setting.CustomConf), | 		"CustomConf":  util.ShellEscape(setting.CustomConf), | ||||||
| @@ -175,7 +175,7 @@ func RewriteAllPublicKeys() error { | |||||||
|  |  | ||||||
| // RegeneratePublicKeys regenerates the authorized_keys file | // RegeneratePublicKeys regenerates the authorized_keys file | ||||||
| func RegeneratePublicKeys(ctx context.Context, t io.StringWriter) error { | func RegeneratePublicKeys(ctx context.Context, t io.StringWriter) error { | ||||||
| 	if err := db.GetEngine(ctx).Where("type != ?", KeyTypePrincipal).Iterate(new(PublicKey), func(idx int, bean interface{}) (err error) { | 	if err := db.GetEngine(ctx).Where("type != ?", KeyTypePrincipal).Iterate(new(PublicKey), func(idx int, bean any) (err error) { | ||||||
| 		_, err = t.WriteString((bean.(*PublicKey)).AuthorizedString()) | 		_, err = t.WriteString((bean.(*PublicKey)).AuthorizedString()) | ||||||
| 		return err | 		return err | ||||||
| 	}); err != nil { | 	}); err != nil { | ||||||
|   | |||||||
| @@ -97,7 +97,7 @@ func RewriteAllPrincipalKeys(ctx context.Context) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| func regeneratePrincipalKeys(ctx context.Context, t io.StringWriter) error { | func regeneratePrincipalKeys(ctx context.Context, t io.StringWriter) error { | ||||||
| 	if err := db.GetEngine(ctx).Where("type = ?", KeyTypePrincipal).Iterate(new(PublicKey), func(idx int, bean interface{}) (err error) { | 	if err := db.GetEngine(ctx).Where("type = ?", KeyTypePrincipal).Iterate(new(PublicKey), func(idx int, bean any) (err error) { | ||||||
| 		_, err = t.WriteString((bean.(*PublicKey)).AuthorizedString()) | 		_, err = t.WriteString((bean.(*PublicKey)).AuthorizedString()) | ||||||
| 		return err | 		return err | ||||||
| 	}); err != nil { | 	}); err != nil { | ||||||
|   | |||||||
| @@ -52,7 +52,7 @@ func (ctx *Context) Engine() Engine { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Value shadows Value for context.Context but allows us to get ourselves and an Engined object | // Value shadows Value for context.Context but allows us to get ourselves and an Engined object | ||||||
| func (ctx *Context) Value(key interface{}) interface{} { | func (ctx *Context) Value(key any) any { | ||||||
| 	if key == enginedContextKey { | 	if key == enginedContextKey { | ||||||
| 		return ctx | 		return ctx | ||||||
| 	} | 	} | ||||||
| @@ -163,28 +163,28 @@ func txWithNoCheck(parentCtx context.Context, f func(ctx context.Context) error) | |||||||
| } | } | ||||||
|  |  | ||||||
| // Insert inserts records into database | // Insert inserts records into database | ||||||
| func Insert(ctx context.Context, beans ...interface{}) error { | func Insert(ctx context.Context, beans ...any) error { | ||||||
| 	_, err := GetEngine(ctx).Insert(beans...) | 	_, err := GetEngine(ctx).Insert(beans...) | ||||||
| 	return err | 	return err | ||||||
| } | } | ||||||
|  |  | ||||||
| // Exec executes a sql with args | // Exec executes a sql with args | ||||||
| func Exec(ctx context.Context, sqlAndArgs ...interface{}) (sql.Result, error) { | func Exec(ctx context.Context, sqlAndArgs ...any) (sql.Result, error) { | ||||||
| 	return GetEngine(ctx).Exec(sqlAndArgs...) | 	return GetEngine(ctx).Exec(sqlAndArgs...) | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetByBean filled empty fields of the bean according non-empty fields to query in database. | // GetByBean filled empty fields of the bean according non-empty fields to query in database. | ||||||
| func GetByBean(ctx context.Context, bean interface{}) (bool, error) { | func GetByBean(ctx context.Context, bean any) (bool, error) { | ||||||
| 	return GetEngine(ctx).Get(bean) | 	return GetEngine(ctx).Get(bean) | ||||||
| } | } | ||||||
|  |  | ||||||
| // DeleteByBean deletes all records according non-empty fields of the bean as conditions. | // DeleteByBean deletes all records according non-empty fields of the bean as conditions. | ||||||
| func DeleteByBean(ctx context.Context, bean interface{}) (int64, error) { | func DeleteByBean(ctx context.Context, bean any) (int64, error) { | ||||||
| 	return GetEngine(ctx).Delete(bean) | 	return GetEngine(ctx).Delete(bean) | ||||||
| } | } | ||||||
|  |  | ||||||
| // DeleteByID deletes the given bean with the given ID | // DeleteByID deletes the given bean with the given ID | ||||||
| func DeleteByID(ctx context.Context, id int64, bean interface{}) (int64, error) { | func DeleteByID(ctx context.Context, id int64, bean any) (int64, error) { | ||||||
| 	return GetEngine(ctx).ID(id).NoAutoTime().Delete(bean) | 	return GetEngine(ctx).ID(id).NoAutoTime().Delete(bean) | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -203,13 +203,13 @@ func FindIDs(ctx context.Context, tableName, idCol string, cond builder.Cond) ([ | |||||||
|  |  | ||||||
| // DecrByIDs decreases the given column for entities of the "bean" type with one of the given ids by one | // DecrByIDs decreases the given column for entities of the "bean" type with one of the given ids by one | ||||||
| // Timestamps of the entities won't be updated | // Timestamps of the entities won't be updated | ||||||
| func DecrByIDs(ctx context.Context, ids []int64, decrCol string, bean interface{}) error { | func DecrByIDs(ctx context.Context, ids []int64, decrCol string, bean any) error { | ||||||
| 	_, err := GetEngine(ctx).Decr(decrCol).In("id", ids).NoAutoCondition().NoAutoTime().Update(bean) | 	_, err := GetEngine(ctx).Decr(decrCol).In("id", ids).NoAutoCondition().NoAutoTime().Update(bean) | ||||||
| 	return err | 	return err | ||||||
| } | } | ||||||
|  |  | ||||||
| // DeleteBeans deletes all given beans, beans must contain delete conditions. | // DeleteBeans deletes all given beans, beans must contain delete conditions. | ||||||
| func DeleteBeans(ctx context.Context, beans ...interface{}) (err error) { | func DeleteBeans(ctx context.Context, beans ...any) (err error) { | ||||||
| 	e := GetEngine(ctx) | 	e := GetEngine(ctx) | ||||||
| 	for i := range beans { | 	for i := range beans { | ||||||
| 		if _, err = e.Delete(beans[i]); err != nil { | 		if _, err = e.Delete(beans[i]); err != nil { | ||||||
| @@ -220,7 +220,7 @@ func DeleteBeans(ctx context.Context, beans ...interface{}) (err error) { | |||||||
| } | } | ||||||
|  |  | ||||||
| // TruncateBeans deletes all given beans, beans may contain delete conditions. | // TruncateBeans deletes all given beans, beans may contain delete conditions. | ||||||
| func TruncateBeans(ctx context.Context, beans ...interface{}) (err error) { | func TruncateBeans(ctx context.Context, beans ...any) (err error) { | ||||||
| 	e := GetEngine(ctx) | 	e := GetEngine(ctx) | ||||||
| 	for i := range beans { | 	for i := range beans { | ||||||
| 		if _, err = e.Truncate(beans[i]); err != nil { | 		if _, err = e.Truncate(beans[i]); err != nil { | ||||||
| @@ -231,12 +231,12 @@ func TruncateBeans(ctx context.Context, beans ...interface{}) (err error) { | |||||||
| } | } | ||||||
|  |  | ||||||
| // CountByBean counts the number of database records according non-empty fields of the bean as conditions. | // CountByBean counts the number of database records according non-empty fields of the bean as conditions. | ||||||
| func CountByBean(ctx context.Context, bean interface{}) (int64, error) { | func CountByBean(ctx context.Context, bean any) (int64, error) { | ||||||
| 	return GetEngine(ctx).Count(bean) | 	return GetEngine(ctx).Count(bean) | ||||||
| } | } | ||||||
|  |  | ||||||
| // TableName returns the table name according a bean object | // TableName returns the table name according a bean object | ||||||
| func TableName(bean interface{}) string { | func TableName(bean any) string { | ||||||
| 	return x.TableName(bean) | 	return x.TableName(bean) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -25,7 +25,7 @@ import ( | |||||||
|  |  | ||||||
| var ( | var ( | ||||||
| 	x         *xorm.Engine | 	x         *xorm.Engine | ||||||
| 	tables    []interface{} | 	tables    []any | ||||||
| 	initFuncs []func() error | 	initFuncs []func() error | ||||||
|  |  | ||||||
| 	// HasEngine specifies if we have a xorm.Engine | 	// HasEngine specifies if we have a xorm.Engine | ||||||
| @@ -34,41 +34,41 @@ var ( | |||||||
|  |  | ||||||
| // Engine represents a xorm engine or session. | // Engine represents a xorm engine or session. | ||||||
| type Engine interface { | type Engine interface { | ||||||
| 	Table(tableNameOrBean interface{}) *xorm.Session | 	Table(tableNameOrBean any) *xorm.Session | ||||||
| 	Count(...interface{}) (int64, error) | 	Count(...any) (int64, error) | ||||||
| 	Decr(column string, arg ...interface{}) *xorm.Session | 	Decr(column string, arg ...any) *xorm.Session | ||||||
| 	Delete(...interface{}) (int64, error) | 	Delete(...any) (int64, error) | ||||||
| 	Truncate(...interface{}) (int64, error) | 	Truncate(...any) (int64, error) | ||||||
| 	Exec(...interface{}) (sql.Result, error) | 	Exec(...any) (sql.Result, error) | ||||||
| 	Find(interface{}, ...interface{}) error | 	Find(any, ...any) error | ||||||
| 	Get(beans ...interface{}) (bool, error) | 	Get(beans ...any) (bool, error) | ||||||
| 	ID(interface{}) *xorm.Session | 	ID(any) *xorm.Session | ||||||
| 	In(string, ...interface{}) *xorm.Session | 	In(string, ...any) *xorm.Session | ||||||
| 	Incr(column string, arg ...interface{}) *xorm.Session | 	Incr(column string, arg ...any) *xorm.Session | ||||||
| 	Insert(...interface{}) (int64, error) | 	Insert(...any) (int64, error) | ||||||
| 	Iterate(interface{}, xorm.IterFunc) error | 	Iterate(any, xorm.IterFunc) error | ||||||
| 	Join(joinOperator string, tablename, condition interface{}, args ...interface{}) *xorm.Session | 	Join(joinOperator string, tablename, condition any, args ...any) *xorm.Session | ||||||
| 	SQL(interface{}, ...interface{}) *xorm.Session | 	SQL(any, ...any) *xorm.Session | ||||||
| 	Where(interface{}, ...interface{}) *xorm.Session | 	Where(any, ...any) *xorm.Session | ||||||
| 	Asc(colNames ...string) *xorm.Session | 	Asc(colNames ...string) *xorm.Session | ||||||
| 	Desc(colNames ...string) *xorm.Session | 	Desc(colNames ...string) *xorm.Session | ||||||
| 	Limit(limit int, start ...int) *xorm.Session | 	Limit(limit int, start ...int) *xorm.Session | ||||||
| 	NoAutoTime() *xorm.Session | 	NoAutoTime() *xorm.Session | ||||||
| 	SumInt(bean interface{}, columnName string) (res int64, err error) | 	SumInt(bean any, columnName string) (res int64, err error) | ||||||
| 	Sync2(...interface{}) error | 	Sync2(...any) error | ||||||
| 	Select(string) *xorm.Session | 	Select(string) *xorm.Session | ||||||
| 	NotIn(string, ...interface{}) *xorm.Session | 	NotIn(string, ...any) *xorm.Session | ||||||
| 	OrderBy(interface{}, ...interface{}) *xorm.Session | 	OrderBy(any, ...any) *xorm.Session | ||||||
| 	Exist(...interface{}) (bool, error) | 	Exist(...any) (bool, error) | ||||||
| 	Distinct(...string) *xorm.Session | 	Distinct(...string) *xorm.Session | ||||||
| 	Query(...interface{}) ([]map[string][]byte, error) | 	Query(...any) ([]map[string][]byte, error) | ||||||
| 	Cols(...string) *xorm.Session | 	Cols(...string) *xorm.Session | ||||||
| 	Context(ctx context.Context) *xorm.Session | 	Context(ctx context.Context) *xorm.Session | ||||||
| 	Ping() error | 	Ping() error | ||||||
| } | } | ||||||
|  |  | ||||||
| // TableInfo returns table's information via an object | // TableInfo returns table's information via an object | ||||||
| func TableInfo(v interface{}) (*schemas.Table, error) { | func TableInfo(v any) (*schemas.Table, error) { | ||||||
| 	return x.TableInfo(v) | 	return x.TableInfo(v) | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -78,7 +78,7 @@ func DumpTables(tables []*schemas.Table, w io.Writer, tp ...schemas.DBType) erro | |||||||
| } | } | ||||||
|  |  | ||||||
| // RegisterModel registers model, if initfunc provided, it will be invoked after data model sync | // RegisterModel registers model, if initfunc provided, it will be invoked after data model sync | ||||||
| func RegisterModel(bean interface{}, initFunc ...func() error) { | func RegisterModel(bean any, initFunc ...func() error) { | ||||||
| 	tables = append(tables, bean) | 	tables = append(tables, bean) | ||||||
| 	if len(initFuncs) > 0 && initFunc[0] != nil { | 	if len(initFuncs) > 0 && initFunc[0] != nil { | ||||||
| 		initFuncs = append(initFuncs, initFunc[0]) | 		initFuncs = append(initFuncs, initFunc[0]) | ||||||
| @@ -209,14 +209,14 @@ func InitEngineWithMigration(ctx context.Context, migrateFunc func(*xorm.Engine) | |||||||
| } | } | ||||||
|  |  | ||||||
| // NamesToBean return a list of beans or an error | // NamesToBean return a list of beans or an error | ||||||
| func NamesToBean(names ...string) ([]interface{}, error) { | func NamesToBean(names ...string) ([]any, error) { | ||||||
| 	beans := []interface{}{} | 	beans := []any{} | ||||||
| 	if len(names) == 0 { | 	if len(names) == 0 { | ||||||
| 		beans = append(beans, tables...) | 		beans = append(beans, tables...) | ||||||
| 		return beans, nil | 		return beans, nil | ||||||
| 	} | 	} | ||||||
| 	// Need to map provided names to beans... | 	// Need to map provided names to beans... | ||||||
| 	beanMap := make(map[string]interface{}) | 	beanMap := make(map[string]any) | ||||||
| 	for _, bean := range tables { | 	for _, bean := range tables { | ||||||
|  |  | ||||||
| 		beanMap[strings.ToLower(reflect.Indirect(reflect.ValueOf(bean)).Type().Name())] = bean | 		beanMap[strings.ToLower(reflect.Indirect(reflect.ValueOf(bean)).Type().Name())] = bean | ||||||
| @@ -224,7 +224,7 @@ func NamesToBean(names ...string) ([]interface{}, error) { | |||||||
| 		beanMap[strings.ToLower(x.TableName(bean, true))] = bean | 		beanMap[strings.ToLower(x.TableName(bean, true))] = bean | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	gotBean := make(map[interface{}]bool) | 	gotBean := make(map[any]bool) | ||||||
| 	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 { | ||||||
| @@ -266,7 +266,7 @@ func DumpDatabase(filePath, dbType string) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| // MaxBatchInsertSize returns the table's max batch insert size | // MaxBatchInsertSize returns the table's max batch insert size | ||||||
| func MaxBatchInsertSize(bean interface{}) int { | func MaxBatchInsertSize(bean any) int { | ||||||
| 	t, err := x.TableInfo(bean) | 	t, err := x.TableInfo(bean) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return 50 | 		return 50 | ||||||
| @@ -286,7 +286,7 @@ func DeleteAllRecords(tableName string) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| // GetMaxID will return max id of the table | // GetMaxID will return max id of the table | ||||||
| func GetMaxID(beanOrTableName interface{}) (maxID int64, err error) { | func GetMaxID(beanOrTableName any) (maxID int64, err error) { | ||||||
| 	_, err = x.Select("MAX(id)").Table(beanOrTableName).Get(&maxID) | 	_, err = x.Select("MAX(id)").Table(beanOrTableName).Get(&maxID) | ||||||
| 	return maxID, err | 	return maxID, err | ||||||
| } | } | ||||||
|   | |||||||
| @@ -25,7 +25,7 @@ func (err ErrCancelled) Error() string { | |||||||
| } | } | ||||||
|  |  | ||||||
| // ErrCancelledf returns an ErrCancelled for the provided format and args | // ErrCancelledf returns an ErrCancelled for the provided format and args | ||||||
| func ErrCancelledf(format string, args ...interface{}) error { | func ErrCancelledf(format string, args ...any) error { | ||||||
| 	return ErrCancelled{ | 	return ErrCancelled{ | ||||||
| 		fmt.Sprintf(format, args...), | 		fmt.Sprintf(format, args...), | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -28,47 +28,47 @@ func NewXORMLogger(showSQL bool) xormlog.Logger { | |||||||
| const stackLevel = 8 | const stackLevel = 8 | ||||||
|  |  | ||||||
| // Log a message with defined skip and at logging level | // Log a message with defined skip and at logging level | ||||||
| func (l *XORMLogBridge) Log(skip int, level log.Level, format string, v ...interface{}) { | func (l *XORMLogBridge) Log(skip int, level log.Level, format string, v ...any) { | ||||||
| 	l.logger.Log(skip+1, level, format, v...) | 	l.logger.Log(skip+1, level, format, v...) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Debug show debug log | // Debug show debug log | ||||||
| func (l *XORMLogBridge) Debug(v ...interface{}) { | func (l *XORMLogBridge) Debug(v ...any) { | ||||||
| 	l.Log(stackLevel, log.DEBUG, "%s", fmt.Sprint(v...)) | 	l.Log(stackLevel, log.DEBUG, "%s", fmt.Sprint(v...)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Debugf show debug log | // Debugf show debug log | ||||||
| func (l *XORMLogBridge) Debugf(format string, v ...interface{}) { | func (l *XORMLogBridge) Debugf(format string, v ...any) { | ||||||
| 	l.Log(stackLevel, log.DEBUG, format, v...) | 	l.Log(stackLevel, log.DEBUG, format, v...) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Error show error log | // Error show error log | ||||||
| func (l *XORMLogBridge) Error(v ...interface{}) { | func (l *XORMLogBridge) Error(v ...any) { | ||||||
| 	l.Log(stackLevel, log.ERROR, "%s", fmt.Sprint(v...)) | 	l.Log(stackLevel, log.ERROR, "%s", fmt.Sprint(v...)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Errorf show error log | // Errorf show error log | ||||||
| func (l *XORMLogBridge) Errorf(format string, v ...interface{}) { | func (l *XORMLogBridge) Errorf(format string, v ...any) { | ||||||
| 	l.Log(stackLevel, log.ERROR, format, v...) | 	l.Log(stackLevel, log.ERROR, format, v...) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Info show information level log | // Info show information level log | ||||||
| func (l *XORMLogBridge) Info(v ...interface{}) { | func (l *XORMLogBridge) Info(v ...any) { | ||||||
| 	l.Log(stackLevel, log.INFO, "%s", fmt.Sprint(v...)) | 	l.Log(stackLevel, log.INFO, "%s", fmt.Sprint(v...)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Infof show information level log | // Infof show information level log | ||||||
| func (l *XORMLogBridge) Infof(format string, v ...interface{}) { | func (l *XORMLogBridge) Infof(format string, v ...any) { | ||||||
| 	l.Log(stackLevel, log.INFO, format, v...) | 	l.Log(stackLevel, log.INFO, format, v...) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Warn show warning log | // Warn show warning log | ||||||
| func (l *XORMLogBridge) Warn(v ...interface{}) { | func (l *XORMLogBridge) Warn(v ...any) { | ||||||
| 	l.Log(stackLevel, log.WARN, "%s", fmt.Sprint(v...)) | 	l.Log(stackLevel, log.WARN, "%s", fmt.Sprint(v...)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Warnf show warnning log | // Warnf show warnning log | ||||||
| func (l *XORMLogBridge) Warnf(format string, v ...interface{}) { | func (l *XORMLogBridge) Warnf(format string, v ...any) { | ||||||
| 	l.Log(stackLevel, log.WARN, format, v...) | 	l.Log(stackLevel, log.WARN, format, v...) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -172,7 +172,7 @@ func RenameBranch(ctx context.Context, repo *repo_model.Repository, from, to str | |||||||
| 	// 3. Update all not merged pull request base branch name | 	// 3. Update all not merged pull request base branch name | ||||||
| 	_, err = sess.Table("pull_request").Where("base_repo_id=? AND base_branch=? AND has_merged=?", | 	_, err = sess.Table("pull_request").Where("base_repo_id=? AND base_branch=? AND has_merged=?", | ||||||
| 		repo.ID, from, false). | 		repo.ID, from, false). | ||||||
| 		Update(map[string]interface{}{"base_branch": to}) | 		Update(map[string]any{"base_branch": to}) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -264,7 +264,7 @@ func LFSAutoAssociate(ctx context.Context, metas []*LFSMetaObject, user *user_mo | |||||||
|  |  | ||||||
| 	sess := db.GetEngine(ctx) | 	sess := db.GetEngine(ctx) | ||||||
|  |  | ||||||
| 	oids := make([]interface{}, len(metas)) | 	oids := make([]any, len(metas)) | ||||||
| 	oidMap := make(map[string]*LFSMetaObject, len(metas)) | 	oidMap := make(map[string]*LFSMetaObject, len(metas)) | ||||||
| 	for i, meta := range metas { | 	for i, meta := range metas { | ||||||
| 		oids[i] = meta.Oid | 		oids[i] = meta.Oid | ||||||
|   | |||||||
| @@ -1131,7 +1131,7 @@ func DeleteComment(ctx context.Context, comment *Comment) error { | |||||||
| 	} | 	} | ||||||
| 	if _, err := e.Table("action"). | 	if _, err := e.Table("action"). | ||||||
| 		Where("comment_id = ?", comment.ID). | 		Where("comment_id = ?", comment.ID). | ||||||
| 		Update(map[string]interface{}{ | 		Update(map[string]any{ | ||||||
| 			"is_deleted": true, | 			"is_deleted": true, | ||||||
| 		}); err != nil { | 		}); err != nil { | ||||||
| 		return err | 		return err | ||||||
| @@ -1156,7 +1156,7 @@ func UpdateCommentsMigrationsByType(tp structs.GitServiceType, originalAuthorID | |||||||
| 				}), | 				}), | ||||||
| 		)). | 		)). | ||||||
| 		And("comment.original_author_id = ?", originalAuthorID). | 		And("comment.original_author_id = ?", originalAuthorID). | ||||||
| 		Update(map[string]interface{}{ | 		Update(map[string]any{ | ||||||
| 			"poster_id":          posterID, | 			"poster_id":          posterID, | ||||||
| 			"original_author":    "", | 			"original_author":    "", | ||||||
| 			"original_author_id": 0, | 			"original_author_id": 0, | ||||||
|   | |||||||
| @@ -714,7 +714,7 @@ func (issue *Issue) Pin(ctx context.Context, user *user_model.User) error { | |||||||
|  |  | ||||||
| 	_, err = db.GetEngine(ctx).Table("issue"). | 	_, err = db.GetEngine(ctx).Table("issue"). | ||||||
| 		Where("id = ?", issue.ID). | 		Where("id = ?", issue.ID). | ||||||
| 		Update(map[string]interface{}{ | 		Update(map[string]any{ | ||||||
| 			"pin_order": maxPin + 1, | 			"pin_order": maxPin + 1, | ||||||
| 		}) | 		}) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -750,7 +750,7 @@ func (issue *Issue) Unpin(ctx context.Context, user *user_model.User) error { | |||||||
|  |  | ||||||
| 	_, err = db.GetEngine(ctx).Table("issue"). | 	_, err = db.GetEngine(ctx).Table("issue"). | ||||||
| 		Where("id = ?", issue.ID). | 		Where("id = ?", issue.ID). | ||||||
| 		Update(map[string]interface{}{ | 		Update(map[string]any{ | ||||||
| 			"pin_order": 0, | 			"pin_order": 0, | ||||||
| 		}) | 		}) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -822,7 +822,7 @@ func (issue *Issue) MovePin(ctx context.Context, newPosition int) error { | |||||||
|  |  | ||||||
| 	_, err = db.GetEngine(dbctx).Table("issue"). | 	_, err = db.GetEngine(dbctx).Table("issue"). | ||||||
| 		Where("id = ?", issue.ID). | 		Where("id = ?", issue.ID). | ||||||
| 		Update(map[string]interface{}{ | 		Update(map[string]any{ | ||||||
| 			"pin_order": newPosition, | 			"pin_order": newPosition, | ||||||
| 		}) | 		}) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|   | |||||||
| @@ -511,7 +511,7 @@ func UpdateIssueDeadline(issue *Issue, deadlineUnix timeutil.TimeStamp, doer *us | |||||||
| } | } | ||||||
|  |  | ||||||
| // DeleteInIssue delete records in beans with external key issue_id = ? | // DeleteInIssue delete records in beans with external key issue_id = ? | ||||||
| func DeleteInIssue(ctx context.Context, issueID int64, beans ...interface{}) error { | func DeleteInIssue(ctx context.Context, issueID int64, beans ...any) error { | ||||||
| 	e := db.GetEngine(ctx) | 	e := db.GetEngine(ctx) | ||||||
| 	for _, bean := range beans { | 	for _, bean := range beans { | ||||||
| 		if _, err := e.In("issue_id", issueID).Delete(bean); err != nil { | 		if _, err := e.In("issue_id", issueID).Delete(bean); err != nil { | ||||||
| @@ -673,7 +673,7 @@ func UpdateIssuesMigrationsByType(gitServiceType api.GitServiceType, originalAut | |||||||
| 	_, err := db.GetEngine(db.DefaultContext).Table("issue"). | 	_, err := db.GetEngine(db.DefaultContext).Table("issue"). | ||||||
| 		Where("repo_id IN (SELECT id FROM repository WHERE original_service_type = ?)", gitServiceType). | 		Where("repo_id IN (SELECT id FROM repository WHERE original_service_type = ?)", gitServiceType). | ||||||
| 		And("original_author_id = ?", originalAuthorID). | 		And("original_author_id = ?", originalAuthorID). | ||||||
| 		Update(map[string]interface{}{ | 		Update(map[string]any{ | ||||||
| 			"poster_id":          posterID, | 			"poster_id":          posterID, | ||||||
| 			"original_author":    "", | 			"original_author":    "", | ||||||
| 			"original_author_id": 0, | 			"original_author_id": 0, | ||||||
| @@ -686,7 +686,7 @@ func UpdateReactionsMigrationsByType(gitServiceType api.GitServiceType, original | |||||||
| 	_, err := db.GetEngine(db.DefaultContext).Table("reaction"). | 	_, err := db.GetEngine(db.DefaultContext).Table("reaction"). | ||||||
| 		Where("original_author_id = ?", originalAuthorID). | 		Where("original_author_id = ?", originalAuthorID). | ||||||
| 		And(migratedIssueCond(gitServiceType)). | 		And(migratedIssueCond(gitServiceType)). | ||||||
| 		Update(map[string]interface{}{ | 		Update(map[string]any{ | ||||||
| 			"user_id":            userID, | 			"user_id":            userID, | ||||||
| 			"original_author":    "", | 			"original_author":    "", | ||||||
| 			"original_author_id": 0, | 			"original_author_id": 0, | ||||||
|   | |||||||
| @@ -1090,7 +1090,7 @@ func UpdateReviewsMigrationsByType(tp structs.GitServiceType, originalAuthorID s | |||||||
| 	_, err := db.GetEngine(db.DefaultContext).Table("review"). | 	_, err := db.GetEngine(db.DefaultContext).Table("review"). | ||||||
| 		Where("original_author_id = ?", originalAuthorID). | 		Where("original_author_id = ?", originalAuthorID). | ||||||
| 		And(migratedIssueCond(tp)). | 		And(migratedIssueCond(tp)). | ||||||
| 		Update(map[string]interface{}{ | 		Update(map[string]any{ | ||||||
| 			"reviewer_id":        posterID, | 			"reviewer_id":        posterID, | ||||||
| 			"original_author":    "", | 			"original_author":    "", | ||||||
| 			"original_author_id": 0, | 			"original_author_id": 0, | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ import ( | |||||||
|  |  | ||||||
| // RecreateTables will recreate the tables for the provided beans using the newly provided bean definition and move all data to that new table | // RecreateTables will recreate the tables for the provided beans using the newly provided bean definition and move all data to that new table | ||||||
| // WARNING: YOU MUST PROVIDE THE FULL BEAN DEFINITION | // WARNING: YOU MUST PROVIDE THE FULL BEAN DEFINITION | ||||||
| func RecreateTables(beans ...interface{}) func(*xorm.Engine) error { | func RecreateTables(beans ...any) func(*xorm.Engine) error { | ||||||
| 	return func(x *xorm.Engine) error { | 	return func(x *xorm.Engine) error { | ||||||
| 		sess := x.NewSession() | 		sess := x.NewSession() | ||||||
| 		defer sess.Close() | 		defer sess.Close() | ||||||
| @@ -48,7 +48,7 @@ func RecreateTables(beans ...interface{}) func(*xorm.Engine) error { | |||||||
| // RecreateTable will recreate the table using the newly provided bean definition and move all data to that new table | // RecreateTable will recreate the table using the newly provided bean definition and move all data to that new table | ||||||
| // WARNING: YOU MUST PROVIDE THE FULL BEAN DEFINITION | // WARNING: YOU MUST PROVIDE THE FULL BEAN DEFINITION | ||||||
| // WARNING: YOU MUST COMMIT THE SESSION AT THE END | // WARNING: YOU MUST COMMIT THE SESSION AT THE END | ||||||
| func RecreateTable(sess *xorm.Session, bean interface{}) error { | func RecreateTable(sess *xorm.Session, bean any) error { | ||||||
| 	// TODO: This will not work if there are foreign keys | 	// TODO: This will not work if there are foreign keys | ||||||
|  |  | ||||||
| 	tableName := sess.Engine().TableName(bean) | 	tableName := sess.Engine().TableName(bean) | ||||||
|   | |||||||
| @@ -30,7 +30,7 @@ import ( | |||||||
| // Provide models to be sync'd with the database - in particular any models you expect fixtures to be loaded from. | // Provide models to be sync'd with the database - in particular any models you expect fixtures to be loaded from. | ||||||
| // | // | ||||||
| // fixtures in `models/migrations/fixtures/<TestName>` will be loaded automatically | // fixtures in `models/migrations/fixtures/<TestName>` will be loaded automatically | ||||||
| func PrepareTestEnv(t *testing.T, skip int, syncModels ...interface{}) (*xorm.Engine, func()) { | func PrepareTestEnv(t *testing.T, skip int, syncModels ...any) (*xorm.Engine, func()) { | ||||||
| 	t.Helper() | 	t.Helper() | ||||||
| 	ourSkip := 2 | 	ourSkip := 2 | ||||||
| 	ourSkip += skip | 	ourSkip += skip | ||||||
|   | |||||||
| @@ -59,11 +59,11 @@ func UpdateMigrationServiceTypes(x *xorm.Engine) error { | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	type ExternalLoginUser struct { | 	type ExternalLoginUser struct { | ||||||
| 		ExternalID        string                 `xorm:"pk NOT NULL"` | 		ExternalID        string         `xorm:"pk NOT NULL"` | ||||||
| 		UserID            int64                  `xorm:"INDEX NOT NULL"` | 		UserID            int64          `xorm:"INDEX NOT NULL"` | ||||||
| 		LoginSourceID     int64                  `xorm:"pk NOT NULL"` | 		LoginSourceID     int64          `xorm:"pk NOT NULL"` | ||||||
| 		RawData           map[string]interface{} `xorm:"TEXT JSON"` | 		RawData           map[string]any `xorm:"TEXT JSON"` | ||||||
| 		Provider          string                 `xorm:"index VARCHAR(25)"` | 		Provider          string         `xorm:"index VARCHAR(25)"` | ||||||
| 		Email             string | 		Email             string | ||||||
| 		Name              string | 		Name              string | ||||||
| 		FirstName         string | 		FirstName         string | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| func UnwrapLDAPSourceCfg(x *xorm.Engine) error { | func UnwrapLDAPSourceCfg(x *xorm.Engine) error { | ||||||
| 	jsonUnmarshalHandleDoubleEncode := func(bs []byte, v interface{}) error { | 	jsonUnmarshalHandleDoubleEncode := func(bs []byte, v any) error { | ||||||
| 		err := json.Unmarshal(bs, v) | 		err := json.Unmarshal(bs, v) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			ok := true | 			ok := true | ||||||
| @@ -54,7 +54,7 @@ func UnwrapLDAPSourceCfg(x *xorm.Engine) error { | |||||||
| 	const dldapType = 5 | 	const dldapType = 5 | ||||||
|  |  | ||||||
| 	type WrappedSource struct { | 	type WrappedSource struct { | ||||||
| 		Source map[string]interface{} | 		Source map[string]any | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// change lower_email as unique | 	// change lower_email as unique | ||||||
| @@ -77,7 +77,7 @@ func UnwrapLDAPSourceCfg(x *xorm.Engine) error { | |||||||
|  |  | ||||||
| 		for _, source := range sources { | 		for _, source := range sources { | ||||||
| 			wrapped := &WrappedSource{ | 			wrapped := &WrappedSource{ | ||||||
| 				Source: map[string]interface{}{}, | 				Source: map[string]any{}, | ||||||
| 			} | 			} | ||||||
| 			err := jsonUnmarshalHandleDoubleEncode([]byte(source.Cfg), &wrapped) | 			err := jsonUnmarshalHandleDoubleEncode([]byte(source.Cfg), &wrapped) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
|   | |||||||
| @@ -62,8 +62,8 @@ func Test_UnwrapLDAPSourceCfg(t *testing.T) { | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		for _, source := range sources { | 		for _, source := range sources { | ||||||
| 			converted := map[string]interface{}{} | 			converted := map[string]any{} | ||||||
| 			expected := map[string]interface{}{} | 			expected := map[string]any{} | ||||||
|  |  | ||||||
| 			if err := json.Unmarshal([]byte(source.Cfg), &converted); err != nil { | 			if err := json.Unmarshal([]byte(source.Cfg), &converted); err != nil { | ||||||
| 				assert.NoError(t, err) | 				assert.NoError(t, err) | ||||||
|   | |||||||
| @@ -79,7 +79,7 @@ func Test_AddHeaderAuthorizationEncryptedColWebhook(t *testing.T) { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	for _, h := range hookTasks { | 	for _, h := range hookTasks { | ||||||
| 		var m map[string]interface{} | 		var m map[string]any | ||||||
| 		err := json.Unmarshal([]byte(h.PayloadContent), &m) | 		err := json.Unmarshal([]byte(h.PayloadContent), &m) | ||||||
| 		assert.NoError(t, err) | 		assert.NoError(t, err) | ||||||
| 		assert.Nil(t, m["access_token"]) | 		assert.Nil(t, m["access_token"]) | ||||||
|   | |||||||
| @@ -81,11 +81,11 @@ func AddIssueDependencies(x *xorm.Engine) (err error) { | |||||||
| 	// RepoUnit describes all units of a repository | 	// RepoUnit describes all units of a repository | ||||||
| 	type RepoUnit struct { | 	type RepoUnit struct { | ||||||
| 		ID          int64 | 		ID          int64 | ||||||
| 		RepoID      int64                  `xorm:"INDEX(s)"` | 		RepoID      int64          `xorm:"INDEX(s)"` | ||||||
| 		Type        int                    `xorm:"INDEX(s)"` | 		Type        int            `xorm:"INDEX(s)"` | ||||||
| 		Config      map[string]interface{} `xorm:"JSON"` | 		Config      map[string]any `xorm:"JSON"` | ||||||
| 		CreatedUnix int64                  `xorm:"INDEX CREATED"` | 		CreatedUnix int64          `xorm:"INDEX CREATED"` | ||||||
| 		Created     time.Time              `xorm:"-"` | 		Created     time.Time      `xorm:"-"` | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// Updating existing issue units | 	// Updating existing issue units | ||||||
| @@ -96,7 +96,7 @@ func AddIssueDependencies(x *xorm.Engine) (err error) { | |||||||
| 	} | 	} | ||||||
| 	for _, unit := range units { | 	for _, unit := range units { | ||||||
| 		if unit.Config == nil { | 		if unit.Config == nil { | ||||||
| 			unit.Config = make(map[string]interface{}) | 			unit.Config = make(map[string]any) | ||||||
| 		} | 		} | ||||||
| 		if _, ok := unit.Config["EnableDependencies"]; !ok { | 		if _, ok := unit.Config["EnableDependencies"]; !ok { | ||||||
| 			unit.Config["EnableDependencies"] = setting.Service.DefaultEnableDependencies | 			unit.Config["EnableDependencies"] = setting.Service.DefaultEnableDependencies | ||||||
|   | |||||||
| @@ -15,10 +15,10 @@ func AddPullRequestRebaseWithMerge(x *xorm.Engine) error { | |||||||
| 	// RepoUnit describes all units of a repository | 	// RepoUnit describes all units of a repository | ||||||
| 	type RepoUnit struct { | 	type RepoUnit struct { | ||||||
| 		ID          int64 | 		ID          int64 | ||||||
| 		RepoID      int64                  `xorm:"INDEX(s)"` | 		RepoID      int64              `xorm:"INDEX(s)"` | ||||||
| 		Type        int                    `xorm:"INDEX(s)"` | 		Type        int                `xorm:"INDEX(s)"` | ||||||
| 		Config      map[string]interface{} `xorm:"JSON"` | 		Config      map[string]any     `xorm:"JSON"` | ||||||
| 		CreatedUnix timeutil.TimeStamp     `xorm:"INDEX CREATED"` | 		CreatedUnix timeutil.TimeStamp `xorm:"INDEX CREATED"` | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	const ( | 	const ( | ||||||
| @@ -46,7 +46,7 @@ func AddPullRequestRebaseWithMerge(x *xorm.Engine) error { | |||||||
| 	} | 	} | ||||||
| 	for _, unit := range units { | 	for _, unit := range units { | ||||||
| 		if unit.Config == nil { | 		if unit.Config == nil { | ||||||
| 			unit.Config = make(map[string]interface{}) | 			unit.Config = make(map[string]any) | ||||||
| 		} | 		} | ||||||
| 		// Allow the new merge style if all other merge styles are allowed | 		// Allow the new merge style if all other merge styles are allowed | ||||||
| 		allowMergeRebase := true | 		allowMergeRebase := true | ||||||
|   | |||||||
| @@ -59,7 +59,7 @@ type PackageDescriptor struct { | |||||||
| 	Creator           *user_model.User | 	Creator           *user_model.User | ||||||
| 	PackageProperties PackagePropertyList | 	PackageProperties PackagePropertyList | ||||||
| 	VersionProperties PackagePropertyList | 	VersionProperties PackagePropertyList | ||||||
| 	Metadata          interface{} | 	Metadata          any | ||||||
| 	Files             []*PackageFileDescriptor | 	Files             []*PackageFileDescriptor | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -136,7 +136,7 @@ func GetPackageDescriptor(ctx context.Context, pv *PackageVersion) (*PackageDesc | |||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var metadata interface{} | 	var metadata any | ||||||
| 	switch p.Type { | 	switch p.Type { | ||||||
| 	case TypeAlpine: | 	case TypeAlpine: | ||||||
| 		metadata = &alpine.VersionMetadata{} | 		metadata = &alpine.VersionMetadata{} | ||||||
|   | |||||||
| @@ -456,7 +456,7 @@ func repoStatsCorrectNumClosedPulls(ctx context.Context, id int64) error { | |||||||
| 	return repo_model.UpdateRepoIssueNumbers(ctx, id, true, true) | 	return repo_model.UpdateRepoIssueNumbers(ctx, id, true, true) | ||||||
| } | } | ||||||
|  |  | ||||||
| func statsQuery(args ...interface{}) func(context.Context) ([]map[string][]byte, error) { | func statsQuery(args ...any) func(context.Context) ([]map[string][]byte, error) { | ||||||
| 	return func(ctx context.Context) ([]map[string][]byte, error) { | 	return func(ctx context.Context) ([]map[string][]byte, error) { | ||||||
| 		return db.GetEngine(ctx).Query(args...) | 		return db.GetEngine(ctx).Query(args...) | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -105,7 +105,7 @@ func DeleteMirrorByRepoID(repoID int64) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| // MirrorsIterate iterates all mirror repositories. | // MirrorsIterate iterates all mirror repositories. | ||||||
| func MirrorsIterate(limit int, f func(idx int, bean interface{}) error) error { | func MirrorsIterate(limit int, f func(idx int, bean any) error) error { | ||||||
| 	sess := db.GetEngine(db.DefaultContext). | 	sess := db.GetEngine(db.DefaultContext). | ||||||
| 		Where("next_update_unix<=?", time.Now().Unix()). | 		Where("next_update_unix<=?", time.Now().Unix()). | ||||||
| 		And("next_update_unix!=0"). | 		And("next_update_unix!=0"). | ||||||
|   | |||||||
| @@ -127,7 +127,7 @@ func GetPushMirrorsSyncedOnCommit(ctx context.Context, repoID int64) ([]*PushMir | |||||||
| } | } | ||||||
|  |  | ||||||
| // PushMirrorsIterate iterates all push-mirror repositories. | // PushMirrorsIterate iterates all push-mirror repositories. | ||||||
| func PushMirrorsIterate(ctx context.Context, limit int, f func(idx int, bean interface{}) error) error { | func PushMirrorsIterate(ctx context.Context, limit int, f func(idx int, bean any) error) error { | ||||||
| 	sess := db.GetEngine(ctx). | 	sess := db.GetEngine(ctx). | ||||||
| 		Where("last_update + (`interval` / ?) <= ?", time.Second, time.Now().Unix()). | 		Where("last_update + (`interval` / ?) <= ?", time.Second, time.Now().Unix()). | ||||||
| 		And("`interval` != 0"). | 		And("`interval` != 0"). | ||||||
|   | |||||||
| @@ -41,7 +41,7 @@ func TestPushMirrorsIterate(t *testing.T) { | |||||||
|  |  | ||||||
| 	time.Sleep(1 * time.Millisecond) | 	time.Sleep(1 * time.Millisecond) | ||||||
|  |  | ||||||
| 	repo_model.PushMirrorsIterate(db.DefaultContext, 1, func(idx int, bean interface{}) error { | 	repo_model.PushMirrorsIterate(db.DefaultContext, 1, func(idx int, bean any) error { | ||||||
| 		m, ok := bean.(*repo_model.PushMirror) | 		m, ok := bean.(*repo_model.PushMirror) | ||||||
| 		assert.True(t, ok) | 		assert.True(t, ok) | ||||||
| 		assert.Equal(t, "test-1", m.RemoteName) | 		assert.Equal(t, "test-1", m.RemoteName) | ||||||
|   | |||||||
| @@ -442,7 +442,7 @@ func UpdateReleasesMigrationsByType(gitServiceType structs.GitServiceType, origi | |||||||
| 	_, err := db.GetEngine(db.DefaultContext).Table("release"). | 	_, err := db.GetEngine(db.DefaultContext).Table("release"). | ||||||
| 		Where("repo_id IN (SELECT id FROM repository WHERE original_service_type = ?)", gitServiceType). | 		Where("repo_id IN (SELECT id FROM repository WHERE original_service_type = ?)", gitServiceType). | ||||||
| 		And("original_author_id = ?", originalAuthorID). | 		And("original_author_id = ?", originalAuthorID). | ||||||
| 		Update(map[string]interface{}{ | 		Update(map[string]any{ | ||||||
| 			"publisher_id":       posterID, | 			"publisher_id":       posterID, | ||||||
| 			"original_author":    "", | 			"original_author":    "", | ||||||
| 			"original_author_id": 0, | 			"original_author_id": 0, | ||||||
|   | |||||||
| @@ -560,7 +560,7 @@ func searchRepositoryByCondition(ctx context.Context, opts *SearchRepoOptions, c | |||||||
| 		opts.OrderBy = db.SearchOrderByAlphabetically | 		opts.OrderBy = db.SearchOrderByAlphabetically | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	args := make([]interface{}, 0) | 	args := make([]any, 0) | ||||||
| 	if opts.PriorityOwnerID > 0 { | 	if opts.PriorityOwnerID > 0 { | ||||||
| 		opts.OrderBy = db.SearchOrderBy(fmt.Sprintf("CASE WHEN owner_id = ? THEN 0 ELSE owner_id END, %s", opts.OrderBy)) | 		opts.OrderBy = db.SearchOrderBy(fmt.Sprintf("CASE WHEN owner_id = ? THEN 0 ELSE owner_id END, %s", opts.OrderBy)) | ||||||
| 		args = append(args, opts.PriorityOwnerID) | 		args = append(args, opts.PriorityOwnerID) | ||||||
|   | |||||||
| @@ -43,7 +43,7 @@ func (n *Notice) TrStr() string { | |||||||
| } | } | ||||||
|  |  | ||||||
| // CreateNotice creates new system notice. | // CreateNotice creates new system notice. | ||||||
| func CreateNotice(ctx context.Context, tp NoticeType, desc string, args ...interface{}) error { | func CreateNotice(ctx context.Context, tp NoticeType, desc string, args ...any) error { | ||||||
| 	if len(args) > 0 { | 	if len(args) > 0 { | ||||||
| 		desc = fmt.Sprintf(desc, args...) | 		desc = fmt.Sprintf(desc, args...) | ||||||
| 	} | 	} | ||||||
| @@ -55,7 +55,7 @@ func CreateNotice(ctx context.Context, tp NoticeType, desc string, args ...inter | |||||||
| } | } | ||||||
|  |  | ||||||
| // CreateRepositoryNotice creates new system notice with type NoticeRepository. | // CreateRepositoryNotice creates new system notice with type NoticeRepository. | ||||||
| func CreateRepositoryNotice(desc string, args ...interface{}) error { | func CreateRepositoryNotice(desc string, args ...any) error { | ||||||
| 	// Note we use the db.DefaultContext here rather than passing in a context as the context may be cancelled | 	// Note we use the db.DefaultContext here rather than passing in a context as the context may be cancelled | ||||||
| 	return CreateNotice(db.DefaultContext, NoticeRepository, desc, args...) | 	return CreateNotice(db.DefaultContext, NoticeRepository, desc, args...) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -21,10 +21,10 @@ const ( | |||||||
| 	modelsCommentTypeComment   = 0 | 	modelsCommentTypeComment   = 0 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var consistencyCheckMap = make(map[string]func(t assert.TestingT, bean interface{})) | var consistencyCheckMap = make(map[string]func(t assert.TestingT, bean any)) | ||||||
|  |  | ||||||
| // CheckConsistencyFor test that all matching database entries are consistent | // CheckConsistencyFor test that all matching database entries are consistent | ||||||
| func CheckConsistencyFor(t assert.TestingT, beansToCheck ...interface{}) { | func CheckConsistencyFor(t assert.TestingT, beansToCheck ...any) { | ||||||
| 	for _, bean := range beansToCheck { | 	for _, bean := range beansToCheck { | ||||||
| 		sliceType := reflect.SliceOf(reflect.TypeOf(bean)) | 		sliceType := reflect.SliceOf(reflect.TypeOf(bean)) | ||||||
| 		sliceValue := reflect.MakeSlice(sliceType, 0, 10) | 		sliceValue := reflect.MakeSlice(sliceType, 0, 10) | ||||||
| @@ -42,7 +42,7 @@ func CheckConsistencyFor(t assert.TestingT, beansToCheck ...interface{}) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func checkForConsistency(t assert.TestingT, bean interface{}) { | func checkForConsistency(t assert.TestingT, bean any) { | ||||||
| 	tb, err := db.TableInfo(bean) | 	tb, err := db.TableInfo(bean) | ||||||
| 	assert.NoError(t, err) | 	assert.NoError(t, err) | ||||||
| 	f := consistencyCheckMap[tb.Name] | 	f := consistencyCheckMap[tb.Name] | ||||||
| @@ -63,7 +63,7 @@ func init() { | |||||||
| 		return i | 		return i | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	checkForUserConsistency := func(t assert.TestingT, bean interface{}) { | 	checkForUserConsistency := func(t assert.TestingT, bean any) { | ||||||
| 		user := reflectionWrap(bean) | 		user := reflectionWrap(bean) | ||||||
| 		AssertCountByCond(t, "repository", builder.Eq{"owner_id": user.int("ID")}, user.int("NumRepos")) | 		AssertCountByCond(t, "repository", builder.Eq{"owner_id": user.int("ID")}, user.int("NumRepos")) | ||||||
| 		AssertCountByCond(t, "star", builder.Eq{"uid": user.int("ID")}, user.int("NumStars")) | 		AssertCountByCond(t, "star", builder.Eq{"uid": user.int("ID")}, user.int("NumStars")) | ||||||
| @@ -77,7 +77,7 @@ func init() { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	checkForRepoConsistency := func(t assert.TestingT, bean interface{}) { | 	checkForRepoConsistency := func(t assert.TestingT, bean any) { | ||||||
| 		repo := reflectionWrap(bean) | 		repo := reflectionWrap(bean) | ||||||
| 		assert.Equal(t, repo.str("LowerName"), strings.ToLower(repo.str("Name")), "repo: %+v", repo) | 		assert.Equal(t, repo.str("LowerName"), strings.ToLower(repo.str("Name")), "repo: %+v", repo) | ||||||
| 		AssertCountByCond(t, "star", builder.Eq{"repo_id": repo.int("ID")}, repo.int("NumStars")) | 		AssertCountByCond(t, "star", builder.Eq{"repo_id": repo.int("ID")}, repo.int("NumStars")) | ||||||
| @@ -113,7 +113,7 @@ func init() { | |||||||
| 			"Unexpected number of closed milestones for repo id: %d", repo.int("ID")) | 			"Unexpected number of closed milestones for repo id: %d", repo.int("ID")) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	checkForIssueConsistency := func(t assert.TestingT, bean interface{}) { | 	checkForIssueConsistency := func(t assert.TestingT, bean any) { | ||||||
| 		issue := reflectionWrap(bean) | 		issue := reflectionWrap(bean) | ||||||
| 		typeComment := modelsCommentTypeComment | 		typeComment := modelsCommentTypeComment | ||||||
| 		actual := GetCountByCond(t, "comment", builder.Eq{"`type`": typeComment, "issue_id": issue.int("ID")}) | 		actual := GetCountByCond(t, "comment", builder.Eq{"`type`": typeComment, "issue_id": issue.int("ID")}) | ||||||
| @@ -124,14 +124,14 @@ func init() { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	checkForPullRequestConsistency := func(t assert.TestingT, bean interface{}) { | 	checkForPullRequestConsistency := func(t assert.TestingT, bean any) { | ||||||
| 		pr := reflectionWrap(bean) | 		pr := reflectionWrap(bean) | ||||||
| 		issueRow := AssertExistsAndLoadMap(t, "issue", builder.Eq{"id": pr.int("IssueID")}) | 		issueRow := AssertExistsAndLoadMap(t, "issue", builder.Eq{"id": pr.int("IssueID")}) | ||||||
| 		assert.True(t, parseBool(issueRow["is_pull"])) | 		assert.True(t, parseBool(issueRow["is_pull"])) | ||||||
| 		assert.EqualValues(t, parseInt(issueRow["index"]), pr.int("Index"), "Unexpected index for pull request id: %d", pr.int("ID")) | 		assert.EqualValues(t, parseInt(issueRow["index"]), pr.int("Index"), "Unexpected index for pull request id: %d", pr.int("ID")) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	checkForMilestoneConsistency := func(t assert.TestingT, bean interface{}) { | 	checkForMilestoneConsistency := func(t assert.TestingT, bean any) { | ||||||
| 		milestone := reflectionWrap(bean) | 		milestone := reflectionWrap(bean) | ||||||
| 		AssertCountByCond(t, "issue", builder.Eq{"milestone_id": milestone.int("ID")}, milestone.int("NumIssues")) | 		AssertCountByCond(t, "issue", builder.Eq{"milestone_id": milestone.int("ID")}, milestone.int("NumIssues")) | ||||||
|  |  | ||||||
| @@ -145,7 +145,7 @@ func init() { | |||||||
| 		assert.Equal(t, completeness, milestone.int("Completeness")) | 		assert.Equal(t, completeness, milestone.int("Completeness")) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	checkForLabelConsistency := func(t assert.TestingT, bean interface{}) { | 	checkForLabelConsistency := func(t assert.TestingT, bean any) { | ||||||
| 		label := reflectionWrap(bean) | 		label := reflectionWrap(bean) | ||||||
| 		issueLabels, err := db.GetEngine(db.DefaultContext).Table("issue_label"). | 		issueLabels, err := db.GetEngine(db.DefaultContext).Table("issue_label"). | ||||||
| 			Where(builder.Eq{"label_id": label.int("ID")}). | 			Where(builder.Eq{"label_id": label.int("ID")}). | ||||||
| @@ -166,13 +166,13 @@ func init() { | |||||||
| 		assert.EqualValues(t, expected, label.int("NumClosedIssues"), "Unexpected number of closed issues for label id: %d", label.int("ID")) | 		assert.EqualValues(t, expected, label.int("NumClosedIssues"), "Unexpected number of closed issues for label id: %d", label.int("ID")) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	checkForTeamConsistency := func(t assert.TestingT, bean interface{}) { | 	checkForTeamConsistency := func(t assert.TestingT, bean any) { | ||||||
| 		team := reflectionWrap(bean) | 		team := reflectionWrap(bean) | ||||||
| 		AssertCountByCond(t, "team_user", builder.Eq{"team_id": team.int("ID")}, team.int("NumMembers")) | 		AssertCountByCond(t, "team_user", builder.Eq{"team_id": team.int("ID")}, team.int("NumMembers")) | ||||||
| 		AssertCountByCond(t, "team_repo", builder.Eq{"team_id": team.int("ID")}, team.int("NumRepos")) | 		AssertCountByCond(t, "team_repo", builder.Eq{"team_id": team.int("ID")}, team.int("NumRepos")) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	checkForActionConsistency := func(t assert.TestingT, bean interface{}) { | 	checkForActionConsistency := func(t assert.TestingT, bean any) { | ||||||
| 		action := reflectionWrap(bean) | 		action := reflectionWrap(bean) | ||||||
| 		if action.int("RepoID") != 1700 { // dangling intentional | 		if action.int("RepoID") != 1700 { // dangling intentional | ||||||
| 			repoRow := AssertExistsAndLoadMap(t, "repository", builder.Eq{"id": action.int("RepoID")}) | 			repoRow := AssertExistsAndLoadMap(t, "repository", builder.Eq{"id": action.int("RepoID")}) | ||||||
|   | |||||||
| @@ -23,7 +23,7 @@ type reflectionValue struct { | |||||||
| 	v reflect.Value | 	v reflect.Value | ||||||
| } | } | ||||||
|  |  | ||||||
| func reflectionWrap(v interface{}) *reflectionValue { | func reflectionWrap(v any) *reflectionValue { | ||||||
| 	return &reflectionValue{v: reflect.ValueOf(v)} | 	return &reflectionValue{v: reflect.ValueOf(v)} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -37,7 +37,7 @@ func FixturesDir() string { | |||||||
| 	return fixturesDir | 	return fixturesDir | ||||||
| } | } | ||||||
|  |  | ||||||
| func fatalTestError(fmtStr string, args ...interface{}) { | func fatalTestError(fmtStr string, args ...any) { | ||||||
| 	_, _ = fmt.Fprintf(os.Stderr, fmtStr, args...) | 	_, _ = fmt.Fprintf(os.Stderr, fmtStr, args...) | ||||||
| 	os.Exit(1) | 	os.Exit(1) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -57,11 +57,11 @@ func (err ErrExternalLoginUserNotExist) Unwrap() error { | |||||||
|  |  | ||||||
| // 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"` | ||||||
| 	UserID            int64                  `xorm:"INDEX NOT NULL"` | 	UserID            int64          `xorm:"INDEX NOT NULL"` | ||||||
| 	LoginSourceID     int64                  `xorm:"pk NOT NULL"` | 	LoginSourceID     int64          `xorm:"pk NOT NULL"` | ||||||
| 	RawData           map[string]interface{} `xorm:"TEXT JSON"` | 	RawData           map[string]any `xorm:"TEXT JSON"` | ||||||
| 	Provider          string                 `xorm:"index VARCHAR(25)"` | 	Provider          string         `xorm:"index VARCHAR(25)"` | ||||||
| 	Email             string | 	Email             string | ||||||
| 	Name              string | 	Name              string | ||||||
| 	FirstName         string | 	FirstName         string | ||||||
|   | |||||||
| @@ -92,7 +92,7 @@ func (t *HookTask) AfterLoad() { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func (t *HookTask) simpleMarshalJSON(v interface{}) string { | func (t *HookTask) simpleMarshalJSON(v any) string { | ||||||
| 	p, err := json.Marshal(v) | 	p, err := json.Marshal(v) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		log.Error("Marshal [%d]: %v", t.ID, err) | 		log.Error("Marshal [%d]: %v", t.ID, err) | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	model.OnDecodeNodeError = func(node yaml.Node, out interface{}, err error) { | 	model.OnDecodeNodeError = func(node yaml.Node, out any, err error) { | ||||||
| 		// Log the error instead of panic or fatal. | 		// Log the error instead of panic or fatal. | ||||||
| 		// It will be a big job to refactor act/pkg/model to return decode error, | 		// It will be a big job to refactor act/pkg/model to return decode error, | ||||||
| 		// so we just log the error and return empty value, and improve it later. | 		// so we just log the error and return empty value, and improve it later. | ||||||
|   | |||||||
| @@ -107,7 +107,7 @@ const TimeLimitCodeLength = 12 + 6 + 40 | |||||||
|  |  | ||||||
| // CreateTimeLimitCode create a time limit code | // CreateTimeLimitCode create a time limit code | ||||||
| // code format: 12 length date time string + 6 minutes string + 40 sha1 encoded string | // code format: 12 length date time string + 6 minutes string + 40 sha1 encoded string | ||||||
| func CreateTimeLimitCode(data string, minutes int, startInf interface{}) string { | func CreateTimeLimitCode(data string, minutes int, startInf any) string { | ||||||
| 	format := "200601021504" | 	format := "200601021504" | ||||||
|  |  | ||||||
| 	var start, end time.Time | 	var start, end time.Time | ||||||
| @@ -245,7 +245,7 @@ func SetupGiteaRoot() string { | |||||||
| } | } | ||||||
|  |  | ||||||
| // FormatNumberSI format a number | // FormatNumberSI format a number | ||||||
| func FormatNumberSI(data interface{}) string { | func FormatNumberSI(data any) string { | ||||||
| 	var num int64 | 	var num int64 | ||||||
| 	if num1, ok := data.(int64); ok { | 	if num1, ok := data.(int64); ok { | ||||||
| 		num = num1 | 		num = num1 | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								modules/cache/cache_redis.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								modules/cache/cache_redis.go
									
									
									
									
										vendored
									
									
								
							| @@ -24,7 +24,7 @@ type RedisCacher struct { | |||||||
| } | } | ||||||
|  |  | ||||||
| // toStr convert string/int/int64 interface to string. it's only used by the RedisCacher.Put internally | // toStr convert string/int/int64 interface to string. it's only used by the RedisCacher.Put internally | ||||||
| func toStr(v interface{}) string { | func toStr(v any) string { | ||||||
| 	if v == nil { | 	if v == nil { | ||||||
| 		return "" | 		return "" | ||||||
| 	} | 	} | ||||||
| @@ -44,7 +44,7 @@ func toStr(v interface{}) string { | |||||||
|  |  | ||||||
| // Put puts value (string type) into cache with key and expire time. | // Put puts value (string type) into cache with key and expire time. | ||||||
| // If expired is 0, it lives forever. | // If expired is 0, it lives forever. | ||||||
| func (c *RedisCacher) Put(key string, val interface{}, expire int64) error { | func (c *RedisCacher) Put(key string, val any, expire int64) error { | ||||||
| 	// this function is not well-designed, it only puts string values into cache | 	// this function is not well-designed, it only puts string values into cache | ||||||
| 	key = c.prefix + key | 	key = c.prefix + key | ||||||
| 	if expire == 0 { | 	if expire == 0 { | ||||||
| @@ -65,7 +65,7 @@ func (c *RedisCacher) Put(key string, val interface{}, expire int64) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Get gets cached value by given key. | // Get gets cached value by given key. | ||||||
| func (c *RedisCacher) Get(key string) interface{} { | func (c *RedisCacher) Get(key string) any { | ||||||
| 	val, err := c.c.Get(graceful.GetManager().HammerContext(), c.prefix+key).Result() | 	val, err := c.c.Get(graceful.GetManager().HammerContext(), c.prefix+key).Result() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil | 		return nil | ||||||
|   | |||||||
							
								
								
									
										8
									
								
								modules/cache/cache_twoqueue.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								modules/cache/cache_twoqueue.go
									
									
									
									
										vendored
									
									
								
							| @@ -30,7 +30,7 @@ type TwoQueueCacheConfig struct { | |||||||
|  |  | ||||||
| // MemoryItem represents a memory cache item. | // MemoryItem represents a memory cache item. | ||||||
| type MemoryItem struct { | type MemoryItem struct { | ||||||
| 	Val     interface{} | 	Val     any | ||||||
| 	Created int64 | 	Created int64 | ||||||
| 	Timeout int64 | 	Timeout int64 | ||||||
| } | } | ||||||
| @@ -43,7 +43,7 @@ func (item *MemoryItem) hasExpired() bool { | |||||||
| var _ mc.Cache = &TwoQueueCache{} | var _ mc.Cache = &TwoQueueCache{} | ||||||
|  |  | ||||||
| // Put puts value into cache with key and expire time. | // Put puts value into cache with key and expire time. | ||||||
| func (c *TwoQueueCache) Put(key string, val interface{}, timeout int64) error { | func (c *TwoQueueCache) Put(key string, val any, timeout int64) error { | ||||||
| 	item := &MemoryItem{ | 	item := &MemoryItem{ | ||||||
| 		Val:     val, | 		Val:     val, | ||||||
| 		Created: time.Now().Unix(), | 		Created: time.Now().Unix(), | ||||||
| @@ -56,7 +56,7 @@ func (c *TwoQueueCache) Put(key string, val interface{}, timeout int64) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Get gets cached value by given key. | // Get gets cached value by given key. | ||||||
| func (c *TwoQueueCache) Get(key string) interface{} { | func (c *TwoQueueCache) Get(key string) any { | ||||||
| 	c.lock.Lock() | 	c.lock.Lock() | ||||||
| 	defer c.lock.Unlock() | 	defer c.lock.Unlock() | ||||||
| 	cached, ok := c.cache.Get(key) | 	cached, ok := c.cache.Get(key) | ||||||
| @@ -146,7 +146,7 @@ func (c *TwoQueueCache) Flush() error { | |||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func (c *TwoQueueCache) checkAndInvalidate(key interface{}) { | func (c *TwoQueueCache) checkAndInvalidate(key any) { | ||||||
| 	c.lock.Lock() | 	c.lock.Lock() | ||||||
| 	defer c.lock.Unlock() | 	defer c.lock.Unlock() | ||||||
| 	cached, ok := c.cache.Peek(key) | 	cached, ok := c.cache.Peek(key) | ||||||
|   | |||||||
| @@ -90,7 +90,7 @@ Usage: %[1]s [-v] [-o output.go] ambiguous.json | |||||||
| 	sort.Slice(tables, func(i, j int) bool { | 	sort.Slice(tables, func(i, j int) bool { | ||||||
| 		return tables[i].Locale < tables[j].Locale | 		return tables[i].Locale < tables[j].Locale | ||||||
| 	}) | 	}) | ||||||
| 	data := map[string]interface{}{ | 	data := map[string]any{ | ||||||
| 		"Tables": tables, | 		"Tables": tables, | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -99,7 +99,7 @@ Usage: %[1]s [-v] [-o output.go] ambiguous.json | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func runTemplate(t *template.Template, filename string, data interface{}) error { | func runTemplate(t *template.Template, filename string, data any) error { | ||||||
| 	buf := bytes.NewBuffer(nil) | 	buf := bytes.NewBuffer(nil) | ||||||
| 	if err := t.Execute(buf, data); err != nil { | 	if err := t.Execute(buf, data); err != nil { | ||||||
| 		return fmt.Errorf("unable to execute template: %w", err) | 		return fmt.Errorf("unable to execute template: %w", err) | ||||||
| @@ -172,17 +172,17 @@ var AmbiguousCharacters = map[string]*AmbiguousTable{ | |||||||
|  |  | ||||||
| `)) | `)) | ||||||
|  |  | ||||||
| func logf(format string, args ...interface{}) { | func logf(format string, args ...any) { | ||||||
| 	fmt.Fprintf(os.Stderr, format+"\n", args...) | 	fmt.Fprintf(os.Stderr, format+"\n", args...) | ||||||
| } | } | ||||||
|  |  | ||||||
| func verbosef(format string, args ...interface{}) { | func verbosef(format string, args ...any) { | ||||||
| 	if verbose { | 	if verbose { | ||||||
| 		logf(format, args...) | 		logf(format, args...) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func fatalf(format string, args ...interface{}) { | func fatalf(format string, args ...any) { | ||||||
| 	logf("fatal: "+format+"\n", args...) | 	logf("fatal: "+format+"\n", args...) | ||||||
| 	os.Exit(1) | 	os.Exit(1) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -52,7 +52,7 @@ Usage: %[1]s [-v] [-o output.go] | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func runTemplate(t *template.Template, filename string, data interface{}) error { | func runTemplate(t *template.Template, filename string, data any) error { | ||||||
| 	buf := bytes.NewBuffer(nil) | 	buf := bytes.NewBuffer(nil) | ||||||
| 	if err := t.Execute(buf, data); err != nil { | 	if err := t.Execute(buf, data); err != nil { | ||||||
| 		return fmt.Errorf("unable to execute template: %w", err) | 		return fmt.Errorf("unable to execute template: %w", err) | ||||||
| @@ -105,17 +105,17 @@ var InvisibleRanges = &unicode.RangeTable{ | |||||||
| } | } | ||||||
| `)) | `)) | ||||||
|  |  | ||||||
| func logf(format string, args ...interface{}) { | func logf(format string, args ...any) { | ||||||
| 	fmt.Fprintf(os.Stderr, format+"\n", args...) | 	fmt.Fprintf(os.Stderr, format+"\n", args...) | ||||||
| } | } | ||||||
|  |  | ||||||
| func verbosef(format string, args ...interface{}) { | func verbosef(format string, args ...any) { | ||||||
| 	if verbose { | 	if verbose { | ||||||
| 		logf(format, args...) | 		logf(format, args...) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func fatalf(format string, args ...interface{}) { | func fatalf(format string, args ...any) { | ||||||
| 	logf("fatal: "+format+"\n", args...) | 	logf("fatal: "+format+"\n", args...) | ||||||
| 	os.Exit(1) | 	os.Exit(1) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -23,7 +23,7 @@ type routerLoggerOptions struct { | |||||||
| 	Identity       *string | 	Identity       *string | ||||||
| 	Start          *time.Time | 	Start          *time.Time | ||||||
| 	ResponseWriter http.ResponseWriter | 	ResponseWriter http.ResponseWriter | ||||||
| 	Ctx            map[string]interface{} | 	Ctx            map[string]any | ||||||
| 	RequestID      *string | 	RequestID      *string | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -84,7 +84,7 @@ func AccessLogger() func(http.Handler) http.Handler { | |||||||
| 				Identity:       &identity, | 				Identity:       &identity, | ||||||
| 				Start:          &start, | 				Start:          &start, | ||||||
| 				ResponseWriter: rw, | 				ResponseWriter: rw, | ||||||
| 				Ctx: map[string]interface{}{ | 				Ctx: map[string]any{ | ||||||
| 					"RemoteAddr": req.RemoteAddr, | 					"RemoteAddr": req.RemoteAddr, | ||||||
| 					"RemoteHost": reqHost, | 					"RemoteHost": reqHost, | ||||||
| 					"Req":        req, | 					"Req":        req, | ||||||
|   | |||||||
| @@ -100,7 +100,7 @@ func (ctx *APIContext) ServerError(title string, err error) { | |||||||
|  |  | ||||||
| // Error responds with an error message to client with given obj as the message. | // Error responds with an error message to client with given obj as the message. | ||||||
| // If status is 500, also it prints error to log. | // If status is 500, also it prints error to log. | ||||||
| func (ctx *APIContext) Error(status int, title string, obj interface{}) { | func (ctx *APIContext) Error(status int, title string, obj any) { | ||||||
| 	var message string | 	var message string | ||||||
| 	if err, ok := obj.(error); ok { | 	if err, ok := obj.(error); ok { | ||||||
| 		message = err.Error() | 		message = err.Error() | ||||||
| @@ -257,7 +257,7 @@ func APIContexter() func(http.Handler) http.Handler { | |||||||
|  |  | ||||||
| // NotFound handles 404s for APIContext | // NotFound handles 404s for APIContext | ||||||
| // String will replace message, errors will be added to a slice | // String will replace message, errors will be added to a slice | ||||||
| func (ctx *APIContext) NotFound(objs ...interface{}) { | func (ctx *APIContext) NotFound(objs ...any) { | ||||||
| 	message := ctx.Tr("error.not_found") | 	message := ctx.Tr("error.not_found") | ||||||
| 	var errors []string | 	var errors []string | ||||||
| 	for _, obj := range objs { | 	for _, obj := range objs { | ||||||
| @@ -273,7 +273,7 @@ func (ctx *APIContext) NotFound(objs ...interface{}) { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	ctx.JSON(http.StatusNotFound, map[string]interface{}{ | 	ctx.JSON(http.StatusNotFound, map[string]any{ | ||||||
| 		"message": message, | 		"message": message, | ||||||
| 		"url":     setting.API.SwaggerURL, | 		"url":     setting.API.SwaggerURL, | ||||||
| 		"errors":  errors, | 		"errors":  errors, | ||||||
|   | |||||||
| @@ -124,7 +124,7 @@ func (b *Base) Error(status int, contents ...string) { | |||||||
| } | } | ||||||
|  |  | ||||||
| // JSON render content as JSON | // JSON render content as JSON | ||||||
| func (b *Base) JSON(status int, content interface{}) { | func (b *Base) JSON(status int, content any) { | ||||||
| 	b.Resp.Header().Set("Content-Type", "application/json;charset=utf-8") | 	b.Resp.Header().Set("Content-Type", "application/json;charset=utf-8") | ||||||
| 	b.Resp.WriteHeader(status) | 	b.Resp.WriteHeader(status) | ||||||
| 	if err := json.NewEncoder(b.Resp).Encode(content); err != nil { | 	if err := json.NewEncoder(b.Resp).Encode(content); err != nil { | ||||||
|   | |||||||
| @@ -60,7 +60,7 @@ const ( | |||||||
|  |  | ||||||
| // VerifyCaptcha verifies Captcha data | // VerifyCaptcha verifies Captcha data | ||||||
| // No-op if captchas are not enabled | // No-op if captchas are not enabled | ||||||
| func VerifyCaptcha(ctx *Context, tpl base.TplName, form interface{}) { | func VerifyCaptcha(ctx *Context, tpl base.TplName, form any) { | ||||||
| 	if !setting.Service.EnableCaptcha { | 	if !setting.Service.EnableCaptcha { | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -30,7 +30,7 @@ import ( | |||||||
| // Render represents a template render | // Render represents a template render | ||||||
| type Render interface { | type Render interface { | ||||||
| 	TemplateLookup(tmpl string) (templates.TemplateExecutor, error) | 	TemplateLookup(tmpl string) (templates.TemplateExecutor, error) | ||||||
| 	HTML(w io.Writer, status int, name string, data interface{}) error | 	HTML(w io.Writer, status int, name string, data any) error | ||||||
| } | } | ||||||
|  |  | ||||||
| // Context represents context of a request. | // Context represents context of a request. | ||||||
| @@ -61,7 +61,7 @@ type Context struct { | |||||||
| // TrHTMLEscapeArgs runs ".Locale.Tr()" but pre-escapes all arguments with html.EscapeString. | // TrHTMLEscapeArgs runs ".Locale.Tr()" but pre-escapes all arguments with html.EscapeString. | ||||||
| // This is useful if the locale message is intended to only produce HTML content. | // This is useful if the locale message is intended to only produce HTML content. | ||||||
| func (ctx *Context) TrHTMLEscapeArgs(msg string, args ...string) string { | func (ctx *Context) TrHTMLEscapeArgs(msg string, args ...string) string { | ||||||
| 	trArgs := make([]interface{}, len(args)) | 	trArgs := make([]any, len(args)) | ||||||
| 	for i, arg := range args { | 	for i, arg := range args { | ||||||
| 		trArgs[i] = html.EscapeString(arg) | 		trArgs[i] = html.EscapeString(arg) | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -97,14 +97,14 @@ func (ctx *Context) HTML(status int, name base.TplName) { | |||||||
| } | } | ||||||
|  |  | ||||||
| // RenderToString renders the template content to a string | // RenderToString renders the template content to a string | ||||||
| func (ctx *Context) RenderToString(name base.TplName, data map[string]interface{}) (string, error) { | func (ctx *Context) RenderToString(name base.TplName, data map[string]any) (string, error) { | ||||||
| 	var buf strings.Builder | 	var buf strings.Builder | ||||||
| 	err := ctx.Render.HTML(&buf, http.StatusOK, string(name), data) | 	err := ctx.Render.HTML(&buf, http.StatusOK, string(name), data) | ||||||
| 	return buf.String(), err | 	return buf.String(), err | ||||||
| } | } | ||||||
|  |  | ||||||
| // RenderWithErr used for page has form validation but need to prompt error to users. | // RenderWithErr used for page has form validation but need to prompt error to users. | ||||||
| func (ctx *Context) RenderWithErr(msg string, tpl base.TplName, form interface{}) { | func (ctx *Context) RenderWithErr(msg string, tpl base.TplName, form any) { | ||||||
| 	if form != nil { | 	if form != nil { | ||||||
| 		middleware.AssignForm(form, ctx.Data) | 		middleware.AssignForm(form, ctx.Data) | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -33,7 +33,7 @@ type packageAssignmentCtx struct { | |||||||
| // PackageAssignment returns a middleware to handle Context.Package assignment | // PackageAssignment returns a middleware to handle Context.Package assignment | ||||||
| func PackageAssignment() func(ctx *Context) { | func PackageAssignment() func(ctx *Context) { | ||||||
| 	return func(ctx *Context) { | 	return func(ctx *Context) { | ||||||
| 		errorFn := func(status int, title string, obj interface{}) { | 		errorFn := func(status int, title string, obj any) { | ||||||
| 			err, ok := obj.(error) | 			err, ok := obj.(error) | ||||||
| 			if !ok { | 			if !ok { | ||||||
| 				err = fmt.Errorf("%s", obj) | 				err = fmt.Errorf("%s", obj) | ||||||
| @@ -57,7 +57,7 @@ func PackageAssignmentAPI() func(ctx *APIContext) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func packageAssignment(ctx *packageAssignmentCtx, errCb func(int, string, interface{})) *Package { | func packageAssignment(ctx *packageAssignmentCtx, errCb func(int, string, any)) *Package { | ||||||
| 	pkg := &Package{ | 	pkg := &Package{ | ||||||
| 		Owner: ctx.ContextUser, | 		Owner: ctx.ContextUser, | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ func (p *Pagination) AddParam(ctx *Context, paramKey, ctxKey string) { | |||||||
| 	if !exists { | 	if !exists { | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	paramData := fmt.Sprintf("%v", ctx.Data[ctxKey]) // cast interface{} to string | 	paramData := fmt.Sprintf("%v", ctx.Data[ctxKey]) // cast any to string | ||||||
| 	urlParam := fmt.Sprintf("%s=%v", url.QueryEscape(paramKey), url.QueryEscape(paramData)) | 	urlParam := fmt.Sprintf("%s=%v", url.QueryEscape(paramKey), url.QueryEscape(paramData)) | ||||||
| 	p.urlParams = append(p.urlParams, urlParam) | 	p.urlParams = append(p.urlParams, urlParam) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -90,7 +90,7 @@ func RequireRepoReaderOr(unitTypes ...unit.Type) func(ctx *Context) { | |||||||
| 		} | 		} | ||||||
| 		if log.IsTrace() { | 		if log.IsTrace() { | ||||||
| 			var format string | 			var format string | ||||||
| 			var args []interface{} | 			var args []any | ||||||
| 			if ctx.IsSigned { | 			if ctx.IsSigned { | ||||||
| 				format = "Permission Denied: User %-v cannot read [" | 				format = "Permission Denied: User %-v cannot read [" | ||||||
| 				args = append(args, ctx.Doer) | 				args = append(args, ctx.Doer) | ||||||
|   | |||||||
| @@ -45,7 +45,7 @@ func (ctx *PrivateContext) Err() error { | |||||||
| 	return ctx.Base.Err() | 	return ctx.Base.Err() | ||||||
| } | } | ||||||
|  |  | ||||||
| var privateContextKey interface{} = "default_private_context" | var privateContextKey any = "default_private_context" | ||||||
|  |  | ||||||
| // GetPrivateContext returns a context for Private routes | // GetPrivateContext returns a context for Private routes | ||||||
| func GetPrivateContext(req *http.Request) *PrivateContext { | func GetPrivateContext(req *http.Request) *PrivateContext { | ||||||
|   | |||||||
| @@ -51,8 +51,8 @@ func wrapNewlines(w io.Writer, prefix, value []byte) (sum int64, err error) { | |||||||
| type Event struct { | type Event struct { | ||||||
| 	// Name represents the value of the event: tag in the stream | 	// Name represents the value of the event: tag in the stream | ||||||
| 	Name string | 	Name string | ||||||
| 	// Data is either JSONified []byte or interface{} that can be JSONd | 	// Data is either JSONified []byte or any that can be JSONd | ||||||
| 	Data interface{} | 	Data any | ||||||
| 	// ID represents the ID of an event | 	// ID represents the ID of an event | ||||||
| 	ID string | 	ID string | ||||||
| 	// Retry tells the receiver only to attempt to reconnect to the source after this time | 	// Retry tells the receiver only to attempt to reconnect to the source after this time | ||||||
|   | |||||||
| @@ -177,7 +177,7 @@ func GetLastCommitForPaths(ctx context.Context, cache *LastCommitCache, c cgobje | |||||||
| 	refSha := c.ID().String() | 	refSha := c.ID().String() | ||||||
|  |  | ||||||
| 	// We do a tree traversal with nodes sorted by commit time | 	// We do a tree traversal with nodes sorted by commit time | ||||||
| 	heap := binaryheap.NewWith(func(a, b interface{}) int { | 	heap := binaryheap.NewWith(func(a, b any) int { | ||||||
| 		if a.(*commitAndPaths).commit.CommitTime().Before(b.(*commitAndPaths).commit.CommitTime()) { | 		if a.(*commitAndPaths).commit.CommitTime().Before(b.(*commitAndPaths).commit.CommitTime()) { | ||||||
| 			return 1 | 			return 1 | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -217,7 +217,7 @@ func TestParser(t *testing.T) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| func pretty(v interface{}) string { | func pretty(v any) string { | ||||||
| 	data, err := json.MarshalIndent(v, "", "  ") | 	data, err := json.MarshalIndent(v, "", "  ") | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		// shouldn't happen | 		// shouldn't happen | ||||||
|   | |||||||
| @@ -114,7 +114,7 @@ func VersionInfo() string { | |||||||
| 		return "(git not found)" | 		return "(git not found)" | ||||||
| 	} | 	} | ||||||
| 	format := "%s" | 	format := "%s" | ||||||
| 	args := []interface{}{gitVersion.Original()} | 	args := []any{gitVersion.Original()} | ||||||
| 	// Since git wire protocol has been released from git v2.18 | 	// Since git wire protocol has been released from git v2.18 | ||||||
| 	if setting.Git.EnableAutoGitWireProtocol && CheckGitVersionAtLeast("2.18") == nil { | 	if setting.Git.EnableAutoGitWireProtocol && CheckGitVersionAtLeast("2.18") == nil { | ||||||
| 		format += ", Wire Protocol %s Enabled" | 		format += ", Wire Protocol %s Enabled" | ||||||
|   | |||||||
| @@ -15,9 +15,9 @@ import ( | |||||||
| // Cache represents a caching interface | // Cache represents a caching interface | ||||||
| type Cache interface { | type Cache interface { | ||||||
| 	// Put puts value into cache with key and expire time. | 	// Put puts value into cache with key and expire time. | ||||||
| 	Put(key string, val interface{}, timeout int64) error | 	Put(key string, val any, timeout int64) error | ||||||
| 	// Get gets cached value by given key. | 	// Get gets cached value by given key. | ||||||
| 	Get(key string) interface{} | 	Get(key string) any | ||||||
| } | } | ||||||
|  |  | ||||||
| func getCacheKey(repoPath, commitID, entryPath string) string { | func getCacheKey(repoPath, commitID, entryPath string) string { | ||||||
|   | |||||||
| @@ -15,17 +15,17 @@ import ( | |||||||
| // ObjectCache provides thread-safe cache operations. | // ObjectCache provides thread-safe cache operations. | ||||||
| type ObjectCache struct { | type ObjectCache struct { | ||||||
| 	lock  sync.RWMutex | 	lock  sync.RWMutex | ||||||
| 	cache map[string]interface{} | 	cache map[string]any | ||||||
| } | } | ||||||
|  |  | ||||||
| func newObjectCache() *ObjectCache { | func newObjectCache() *ObjectCache { | ||||||
| 	return &ObjectCache{ | 	return &ObjectCache{ | ||||||
| 		cache: make(map[string]interface{}, 10), | 		cache: make(map[string]any, 10), | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| // Set add obj to cache | // Set add obj to cache | ||||||
| func (oc *ObjectCache) Set(id string, obj interface{}) { | func (oc *ObjectCache) Set(id string, obj any) { | ||||||
| 	oc.lock.Lock() | 	oc.lock.Lock() | ||||||
| 	defer oc.lock.Unlock() | 	defer oc.lock.Unlock() | ||||||
|  |  | ||||||
| @@ -33,7 +33,7 @@ func (oc *ObjectCache) Set(id string, obj interface{}) { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Get get cached obj by id | // Get get cached obj by id | ||||||
| func (oc *ObjectCache) Get(id string) (interface{}, bool) { | func (oc *ObjectCache) Get(id string) (any, bool) { | ||||||
| 	oc.lock.RLock() | 	oc.lock.RLock() | ||||||
| 	defer oc.lock.RUnlock() | 	defer oc.lock.RUnlock() | ||||||
|  |  | ||||||
|   | |||||||
| @@ -283,7 +283,7 @@ func (g *Manager) Err() error { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Value allows the manager to be viewed as a context.Context done at Terminate | // Value allows the manager to be viewed as a context.Context done at Terminate | ||||||
| func (g *Manager) Value(key interface{}) interface{} { | func (g *Manager) Value(key any) any { | ||||||
| 	return g.managerCtx.Value(key) | 	return g.managerCtx.Value(key) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ package html | |||||||
|  |  | ||||||
| // ParseSizeAndClass get size and class from string with default values | // ParseSizeAndClass get size and class from string with default values | ||||||
| // If present, "others" expects the new size first and then the classes to use | // If present, "others" expects the new size first and then the classes to use | ||||||
| func ParseSizeAndClass(defaultSize int, defaultClass string, others ...interface{}) (int, string) { | func ParseSizeAndClass(defaultSize int, defaultClass string, others ...any) (int, string) { | ||||||
| 	if len(others) == 0 { | 	if len(others) == 0 { | ||||||
| 		return defaultSize, defaultClass | 		return defaultSize, defaultClass | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -101,7 +101,7 @@ func (r *Request) Param(key, value string) *Request { | |||||||
|  |  | ||||||
| // Body adds request raw body. | // Body adds request raw body. | ||||||
| // it supports string and []byte. | // it supports string and []byte. | ||||||
| func (r *Request) Body(data interface{}) *Request { | func (r *Request) Body(data any) *Request { | ||||||
| 	switch t := data.(type) { | 	switch t := data.(type) { | ||||||
| 	case string: | 	case string: | ||||||
| 		bf := bytes.NewBufferString(t) | 		bf := bytes.NewBufferString(t) | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ func NewFlushingBatch(index bleve.Index, maxBatchSize int) *FlushingBatch { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Index add a new index to batch | // Index add a new index to batch | ||||||
| func (b *FlushingBatch) Index(id string, data interface{}) error { | func (b *FlushingBatch) Index(id string, data any) error { | ||||||
| 	if err := b.batch.Index(id, data); err != nil { | 	if err := b.batch.Index(id, data); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -53,7 +53,7 @@ func numericEqualityQuery(value int64, field string) *query.NumericRangeQuery { | |||||||
| } | } | ||||||
|  |  | ||||||
| func addUnicodeNormalizeTokenFilter(m *mapping.IndexMappingImpl) error { | func addUnicodeNormalizeTokenFilter(m *mapping.IndexMappingImpl) error { | ||||||
| 	return m.AddCustomTokenFilter(unicodeNormalizeName, map[string]interface{}{ | 	return m.AddCustomTokenFilter(unicodeNormalizeName, map[string]any{ | ||||||
| 		"type": unicodenorm.Name, | 		"type": unicodenorm.Name, | ||||||
| 		"form": unicodenorm.NFC, | 		"form": unicodenorm.NFC, | ||||||
| 	}) | 	}) | ||||||
| @@ -135,7 +135,7 @@ func createBleveIndexer(path string, latestVersion int) (bleve.Index, error) { | |||||||
| 	mapping := bleve.NewIndexMapping() | 	mapping := bleve.NewIndexMapping() | ||||||
| 	if err := addUnicodeNormalizeTokenFilter(mapping); err != nil { | 	if err := addUnicodeNormalizeTokenFilter(mapping); err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} else if err := mapping.AddCustomAnalyzer(repoIndexerAnalyzer, map[string]interface{}{ | 	} else if err := mapping.AddCustomAnalyzer(repoIndexerAnalyzer, map[string]any{ | ||||||
| 		"type":          analyzer_custom.Name, | 		"type":          analyzer_custom.Name, | ||||||
| 		"char_filters":  []string{}, | 		"char_filters":  []string{}, | ||||||
| 		"tokenizer":     unicode.Name, | 		"tokenizer":     unicode.Name, | ||||||
|   | |||||||
| @@ -241,7 +241,7 @@ func (b *ElasticSearchIndexer) addUpdate(ctx context.Context, batchWriter git.Wr | |||||||
| 		elastic.NewBulkIndexRequest(). | 		elastic.NewBulkIndexRequest(). | ||||||
| 			Index(b.indexerAliasName). | 			Index(b.indexerAliasName). | ||||||
| 			Id(id). | 			Id(id). | ||||||
| 			Doc(map[string]interface{}{ | 			Doc(map[string]any{ | ||||||
| 				"repo_id":    repo.ID, | 				"repo_id":    repo.ID, | ||||||
| 				"content":    string(charset.ToUTF8DropErrors(fileContents)), | 				"content":    string(charset.ToUTF8DropErrors(fileContents)), | ||||||
| 				"commit_id":  sha, | 				"commit_id":  sha, | ||||||
| @@ -342,7 +342,7 @@ func convertResult(searchResult *elastic.SearchResult, kw string, pageSize int) | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		repoID, fileName := parseIndexerID(hit.Id) | 		repoID, fileName := parseIndexerID(hit.Id) | ||||||
| 		res := make(map[string]interface{}) | 		res := make(map[string]any) | ||||||
| 		if err := json.Unmarshal(hit.Source, &res); err != nil { | 		if err := json.Unmarshal(hit.Source, &res); err != nil { | ||||||
| 			return 0, nil, nil, err | 			return 0, nil, nil, err | ||||||
| 		} | 		} | ||||||
| @@ -393,7 +393,7 @@ func (b *ElasticSearchIndexer) Search(ctx context.Context, repoIDs []int64, lang | |||||||
| 	query := elastic.NewBoolQuery() | 	query := elastic.NewBoolQuery() | ||||||
| 	query = query.Must(kwQuery) | 	query = query.Must(kwQuery) | ||||||
| 	if len(repoIDs) > 0 { | 	if len(repoIDs) > 0 { | ||||||
| 		repoStrs := make([]interface{}, 0, len(repoIDs)) | 		repoStrs := make([]any, 0, len(repoIDs)) | ||||||
| 		for _, repoID := range repoIDs { | 		for _, repoID := range repoIDs { | ||||||
| 			repoStrs = append(repoStrs, repoID) | 			repoStrs = append(repoStrs, repoID) | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -64,7 +64,7 @@ func newMatchPhraseQuery(matchPhrase, field, analyzer string) *query.MatchPhrase | |||||||
| const unicodeNormalizeName = "unicodeNormalize" | const unicodeNormalizeName = "unicodeNormalize" | ||||||
|  |  | ||||||
| func addUnicodeNormalizeTokenFilter(m *mapping.IndexMappingImpl) error { | func addUnicodeNormalizeTokenFilter(m *mapping.IndexMappingImpl) error { | ||||||
| 	return m.AddCustomTokenFilter(unicodeNormalizeName, map[string]interface{}{ | 	return m.AddCustomTokenFilter(unicodeNormalizeName, map[string]any{ | ||||||
| 		"type": unicodenorm.Name, | 		"type": unicodenorm.Name, | ||||||
| 		"form": unicodenorm.NFC, | 		"form": unicodenorm.NFC, | ||||||
| 	}) | 	}) | ||||||
| @@ -131,7 +131,7 @@ func createIssueIndexer(path string, latestVersion int) (bleve.Index, error) { | |||||||
|  |  | ||||||
| 	if err := addUnicodeNormalizeTokenFilter(mapping); err != nil { | 	if err := addUnicodeNormalizeTokenFilter(mapping); err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} else if err = mapping.AddCustomAnalyzer(issueIndexerAnalyzer, map[string]interface{}{ | 	} else if err = mapping.AddCustomAnalyzer(issueIndexerAnalyzer, map[string]any{ | ||||||
| 		"type":          custom.Name, | 		"type":          custom.Name, | ||||||
| 		"char_filters":  []string{}, | 		"char_filters":  []string{}, | ||||||
| 		"tokenizer":     unicode.Name, | 		"tokenizer":     unicode.Name, | ||||||
|   | |||||||
| @@ -140,7 +140,7 @@ func (b *ElasticSearchIndexer) Index(issues []*IndexerData) error { | |||||||
| 		_, err := b.client.Index(). | 		_, err := b.client.Index(). | ||||||
| 			Index(b.indexerName). | 			Index(b.indexerName). | ||||||
| 			Id(fmt.Sprintf("%d", issue.ID)). | 			Id(fmt.Sprintf("%d", issue.ID)). | ||||||
| 			BodyJson(map[string]interface{}{ | 			BodyJson(map[string]any{ | ||||||
| 				"id":       issue.ID, | 				"id":       issue.ID, | ||||||
| 				"repo_id":  issue.RepoID, | 				"repo_id":  issue.RepoID, | ||||||
| 				"title":    issue.Title, | 				"title":    issue.Title, | ||||||
| @@ -157,7 +157,7 @@ func (b *ElasticSearchIndexer) Index(issues []*IndexerData) error { | |||||||
| 			elastic.NewBulkIndexRequest(). | 			elastic.NewBulkIndexRequest(). | ||||||
| 				Index(b.indexerName). | 				Index(b.indexerName). | ||||||
| 				Id(fmt.Sprintf("%d", issue.ID)). | 				Id(fmt.Sprintf("%d", issue.ID)). | ||||||
| 				Doc(map[string]interface{}{ | 				Doc(map[string]any{ | ||||||
| 					"id":       issue.ID, | 					"id":       issue.ID, | ||||||
| 					"repo_id":  issue.RepoID, | 					"repo_id":  issue.RepoID, | ||||||
| 					"title":    issue.Title, | 					"title":    issue.Title, | ||||||
| @@ -209,7 +209,7 @@ func (b *ElasticSearchIndexer) Search(ctx context.Context, keyword string, repoI | |||||||
| 	query := elastic.NewBoolQuery() | 	query := elastic.NewBoolQuery() | ||||||
| 	query = query.Must(kwQuery) | 	query = query.Must(kwQuery) | ||||||
| 	if len(repoIDs) > 0 { | 	if len(repoIDs) > 0 { | ||||||
| 		repoStrs := make([]interface{}, 0, len(repoIDs)) | 		repoStrs := make([]any, 0, len(repoIDs)) | ||||||
| 		for _, repoID := range repoIDs { | 		for _, repoID := range repoIDs { | ||||||
| 			repoStrs = append(repoStrs, repoID) | 			repoStrs = append(repoStrs, repoID) | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -130,7 +130,7 @@ func (b *MeilisearchIndexer) Search(ctx context.Context, keyword string, repoIDs | |||||||
| 	hits := make([]Match, 0, len(searchRes.Hits)) | 	hits := make([]Match, 0, len(searchRes.Hits)) | ||||||
| 	for _, hit := range searchRes.Hits { | 	for _, hit := range searchRes.Hits { | ||||||
| 		hits = append(hits, Match{ | 		hits = append(hits, Match{ | ||||||
| 			ID: int64(hit.(map[string]interface{})["id"].(float64)), | 			ID: int64(hit.(map[string]any)["id"].(float64)), | ||||||
| 		}) | 		}) | ||||||
| 	} | 	} | ||||||
| 	return &SearchResult{ | 	return &SearchResult{ | ||||||
|   | |||||||
| @@ -151,7 +151,7 @@ func validateOptions(field *api.IssueFormField, idx int) error { | |||||||
| 	} | 	} | ||||||
| 	position := newErrorPosition(idx, field.Type) | 	position := newErrorPosition(idx, field.Type) | ||||||
|  |  | ||||||
| 	options, ok := field.Attributes["options"].([]interface{}) | 	options, ok := field.Attributes["options"].([]any) | ||||||
| 	if !ok || len(options) == 0 { | 	if !ok || len(options) == 0 { | ||||||
| 		return position.Errorf("'options' is required and should be a array") | 		return position.Errorf("'options' is required and should be a array") | ||||||
| 	} | 	} | ||||||
| @@ -164,7 +164,7 @@ func validateOptions(field *api.IssueFormField, idx int) error { | |||||||
| 				return position.Errorf("should be a string") | 				return position.Errorf("should be a string") | ||||||
| 			} | 			} | ||||||
| 		case api.IssueFormFieldTypeCheckboxes: | 		case api.IssueFormFieldTypeCheckboxes: | ||||||
| 			opt, ok := option.(map[string]interface{}) | 			opt, ok := option.(map[string]any) | ||||||
| 			if !ok { | 			if !ok { | ||||||
| 				return position.Errorf("should be a dictionary") | 				return position.Errorf("should be a dictionary") | ||||||
| 			} | 			} | ||||||
| @@ -182,7 +182,7 @@ func validateOptions(field *api.IssueFormField, idx int) error { | |||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func validateStringItem(position errorPosition, m map[string]interface{}, required bool, names ...string) error { | func validateStringItem(position errorPosition, m map[string]any, required bool, names ...string) error { | ||||||
| 	for _, name := range names { | 	for _, name := range names { | ||||||
| 		v, ok := m[name] | 		v, ok := m[name] | ||||||
| 		if !ok { | 		if !ok { | ||||||
| @@ -202,7 +202,7 @@ func validateStringItem(position errorPosition, m map[string]interface{}, requir | |||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func validateBoolItem(position errorPosition, m map[string]interface{}, names ...string) error { | func validateBoolItem(position errorPosition, m map[string]any, names ...string) error { | ||||||
| 	for _, name := range names { | 	for _, name := range names { | ||||||
| 		v, ok := m[name] | 		v, ok := m[name] | ||||||
| 		if !ok { | 		if !ok { | ||||||
| @@ -217,7 +217,7 @@ func validateBoolItem(position errorPosition, m map[string]interface{}, names .. | |||||||
|  |  | ||||||
| type errorPosition string | type errorPosition string | ||||||
|  |  | ||||||
| func (p errorPosition) Errorf(format string, a ...interface{}) error { | func (p errorPosition) Errorf(format string, a ...any) error { | ||||||
| 	return fmt.Errorf(string(p)+": "+format, a...) | 	return fmt.Errorf(string(p)+": "+format, a...) | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -332,7 +332,7 @@ func (f *valuedField) Value() string { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (f *valuedField) Options() []*valuedOption { | func (f *valuedField) Options() []*valuedOption { | ||||||
| 	if options, ok := f.Attributes["options"].([]interface{}); ok { | 	if options, ok := f.Attributes["options"].([]any); ok { | ||||||
| 		ret := make([]*valuedOption, 0, len(options)) | 		ret := make([]*valuedOption, 0, len(options)) | ||||||
| 		for i, option := range options { | 		for i, option := range options { | ||||||
| 			ret = append(ret, &valuedOption{ | 			ret = append(ret, &valuedOption{ | ||||||
| @@ -348,7 +348,7 @@ func (f *valuedField) Options() []*valuedOption { | |||||||
|  |  | ||||||
| type valuedOption struct { | type valuedOption struct { | ||||||
| 	index int | 	index int | ||||||
| 	data  interface{} | 	data  any | ||||||
| 	field *valuedField | 	field *valuedField | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -359,7 +359,7 @@ func (o *valuedOption) Label() string { | |||||||
| 			return label | 			return label | ||||||
| 		} | 		} | ||||||
| 	case api.IssueFormFieldTypeCheckboxes: | 	case api.IssueFormFieldTypeCheckboxes: | ||||||
| 		if vs, ok := o.data.(map[string]interface{}); ok { | 		if vs, ok := o.data.(map[string]any); ok { | ||||||
| 			if v, ok := vs["label"].(string); ok { | 			if v, ok := vs["label"].(string); ok { | ||||||
| 				return v | 				return v | ||||||
| 			} | 			} | ||||||
|   | |||||||
| @@ -387,34 +387,34 @@ body: | |||||||
| 					{ | 					{ | ||||||
| 						Type: "markdown", | 						Type: "markdown", | ||||||
| 						ID:   "id1", | 						ID:   "id1", | ||||||
| 						Attributes: map[string]interface{}{ | 						Attributes: map[string]any{ | ||||||
| 							"value": "Value of the markdown", | 							"value": "Value of the markdown", | ||||||
| 						}, | 						}, | ||||||
| 					}, | 					}, | ||||||
| 					{ | 					{ | ||||||
| 						Type: "textarea", | 						Type: "textarea", | ||||||
| 						ID:   "id2", | 						ID:   "id2", | ||||||
| 						Attributes: map[string]interface{}{ | 						Attributes: map[string]any{ | ||||||
| 							"label":       "Label of textarea", | 							"label":       "Label of textarea", | ||||||
| 							"description": "Description of textarea", | 							"description": "Description of textarea", | ||||||
| 							"placeholder": "Placeholder of textarea", | 							"placeholder": "Placeholder of textarea", | ||||||
| 							"value":       "Value of textarea", | 							"value":       "Value of textarea", | ||||||
| 							"render":      "bash", | 							"render":      "bash", | ||||||
| 						}, | 						}, | ||||||
| 						Validations: map[string]interface{}{ | 						Validations: map[string]any{ | ||||||
| 							"required": true, | 							"required": true, | ||||||
| 						}, | 						}, | ||||||
| 					}, | 					}, | ||||||
| 					{ | 					{ | ||||||
| 						Type: "input", | 						Type: "input", | ||||||
| 						ID:   "id3", | 						ID:   "id3", | ||||||
| 						Attributes: map[string]interface{}{ | 						Attributes: map[string]any{ | ||||||
| 							"label":       "Label of input", | 							"label":       "Label of input", | ||||||
| 							"description": "Description of input", | 							"description": "Description of input", | ||||||
| 							"placeholder": "Placeholder of input", | 							"placeholder": "Placeholder of input", | ||||||
| 							"value":       "Value of input", | 							"value":       "Value of input", | ||||||
| 						}, | 						}, | ||||||
| 						Validations: map[string]interface{}{ | 						Validations: map[string]any{ | ||||||
| 							"required":  true, | 							"required":  true, | ||||||
| 							"is_number": true, | 							"is_number": true, | ||||||
| 							"regex":     "[a-zA-Z0-9]+", | 							"regex":     "[a-zA-Z0-9]+", | ||||||
| @@ -423,30 +423,30 @@ body: | |||||||
| 					{ | 					{ | ||||||
| 						Type: "dropdown", | 						Type: "dropdown", | ||||||
| 						ID:   "id4", | 						ID:   "id4", | ||||||
| 						Attributes: map[string]interface{}{ | 						Attributes: map[string]any{ | ||||||
| 							"label":       "Label of dropdown", | 							"label":       "Label of dropdown", | ||||||
| 							"description": "Description of dropdown", | 							"description": "Description of dropdown", | ||||||
| 							"multiple":    true, | 							"multiple":    true, | ||||||
| 							"options": []interface{}{ | 							"options": []any{ | ||||||
| 								"Option 1 of dropdown", | 								"Option 1 of dropdown", | ||||||
| 								"Option 2 of dropdown", | 								"Option 2 of dropdown", | ||||||
| 								"Option 3 of dropdown", | 								"Option 3 of dropdown", | ||||||
| 							}, | 							}, | ||||||
| 						}, | 						}, | ||||||
| 						Validations: map[string]interface{}{ | 						Validations: map[string]any{ | ||||||
| 							"required": true, | 							"required": true, | ||||||
| 						}, | 						}, | ||||||
| 					}, | 					}, | ||||||
| 					{ | 					{ | ||||||
| 						Type: "checkboxes", | 						Type: "checkboxes", | ||||||
| 						ID:   "id5", | 						ID:   "id5", | ||||||
| 						Attributes: map[string]interface{}{ | 						Attributes: map[string]any{ | ||||||
| 							"label":       "Label of checkboxes", | 							"label":       "Label of checkboxes", | ||||||
| 							"description": "Description of checkboxes", | 							"description": "Description of checkboxes", | ||||||
| 							"options": []interface{}{ | 							"options": []any{ | ||||||
| 								map[string]interface{}{"label": "Option 1 of checkboxes", "required": true}, | 								map[string]any{"label": "Option 1 of checkboxes", "required": true}, | ||||||
| 								map[string]interface{}{"label": "Option 2 of checkboxes", "required": false}, | 								map[string]any{"label": "Option 2 of checkboxes", "required": false}, | ||||||
| 								map[string]interface{}{"label": "Option 3 of checkboxes", "required": true}, | 								map[string]any{"label": "Option 3 of checkboxes", "required": true}, | ||||||
| 							}, | 							}, | ||||||
| 						}, | 						}, | ||||||
| 					}, | 					}, | ||||||
| @@ -479,7 +479,7 @@ body: | |||||||
| 					{ | 					{ | ||||||
| 						Type: "markdown", | 						Type: "markdown", | ||||||
| 						ID:   "id1", | 						ID:   "id1", | ||||||
| 						Attributes: map[string]interface{}{ | 						Attributes: map[string]any{ | ||||||
| 							"value": "Value of the markdown", | 							"value": "Value of the markdown", | ||||||
| 						}, | 						}, | ||||||
| 					}, | 					}, | ||||||
| @@ -512,7 +512,7 @@ body: | |||||||
| 					{ | 					{ | ||||||
| 						Type: "markdown", | 						Type: "markdown", | ||||||
| 						ID:   "id1", | 						ID:   "id1", | ||||||
| 						Attributes: map[string]interface{}{ | 						Attributes: map[string]any{ | ||||||
| 							"value": "Value of the markdown", | 							"value": "Value of the markdown", | ||||||
| 						}, | 						}, | ||||||
| 					}, | 					}, | ||||||
| @@ -545,7 +545,7 @@ body: | |||||||
| 					{ | 					{ | ||||||
| 						Type: "markdown", | 						Type: "markdown", | ||||||
| 						ID:   "id1", | 						ID:   "id1", | ||||||
| 						Attributes: map[string]interface{}{ | 						Attributes: map[string]any{ | ||||||
| 							"value": "Value of the markdown", | 							"value": "Value of the markdown", | ||||||
| 						}, | 						}, | ||||||
| 					}, | 					}, | ||||||
|   | |||||||
| @@ -15,18 +15,18 @@ import ( | |||||||
|  |  | ||||||
| // Encoder represents an encoder for json | // Encoder represents an encoder for json | ||||||
| type Encoder interface { | type Encoder interface { | ||||||
| 	Encode(v interface{}) error | 	Encode(v any) error | ||||||
| } | } | ||||||
|  |  | ||||||
| // Decoder represents a decoder for json | // Decoder represents a decoder for json | ||||||
| type Decoder interface { | type Decoder interface { | ||||||
| 	Decode(v interface{}) error | 	Decode(v any) error | ||||||
| } | } | ||||||
|  |  | ||||||
| // Interface represents an interface to handle json data | // Interface represents an interface to handle json data | ||||||
| type Interface interface { | type Interface interface { | ||||||
| 	Marshal(v interface{}) ([]byte, error) | 	Marshal(v any) ([]byte, error) | ||||||
| 	Unmarshal(data []byte, v interface{}) error | 	Unmarshal(data []byte, v any) error | ||||||
| 	NewEncoder(writer io.Writer) Encoder | 	NewEncoder(writer io.Writer) Encoder | ||||||
| 	NewDecoder(reader io.Reader) Decoder | 	NewDecoder(reader io.Reader) Decoder | ||||||
| 	Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error | 	Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error | ||||||
| @@ -44,12 +44,12 @@ var ( | |||||||
| type StdJSON struct{} | type StdJSON struct{} | ||||||
|  |  | ||||||
| // Marshal implements Interface | // Marshal implements Interface | ||||||
| func (StdJSON) Marshal(v interface{}) ([]byte, error) { | func (StdJSON) Marshal(v any) ([]byte, error) { | ||||||
| 	return json.Marshal(v) | 	return json.Marshal(v) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Unmarshal implements Interface | // Unmarshal implements Interface | ||||||
| func (StdJSON) Unmarshal(data []byte, v interface{}) error { | func (StdJSON) Unmarshal(data []byte, v any) error { | ||||||
| 	return json.Unmarshal(data, v) | 	return json.Unmarshal(data, v) | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -74,12 +74,12 @@ type JSONiter struct { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Marshal implements Interface | // Marshal implements Interface | ||||||
| func (j JSONiter) Marshal(v interface{}) ([]byte, error) { | func (j JSONiter) Marshal(v any) ([]byte, error) { | ||||||
| 	return j.API.Marshal(v) | 	return j.API.Marshal(v) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Unmarshal implements Interface | // Unmarshal implements Interface | ||||||
| func (j JSONiter) Unmarshal(data []byte, v interface{}) error { | func (j JSONiter) Unmarshal(data []byte, v any) error { | ||||||
| 	return j.API.Unmarshal(data, v) | 	return j.API.Unmarshal(data, v) | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -99,12 +99,12 @@ func (j JSONiter) Indent(dst *bytes.Buffer, src []byte, prefix, indent string) e | |||||||
| } | } | ||||||
|  |  | ||||||
| // Marshal converts object as bytes | // Marshal converts object as bytes | ||||||
| func Marshal(v interface{}) ([]byte, error) { | func Marshal(v any) ([]byte, error) { | ||||||
| 	return DefaultJSONHandler.Marshal(v) | 	return DefaultJSONHandler.Marshal(v) | ||||||
| } | } | ||||||
|  |  | ||||||
| // Unmarshal decodes object from bytes | // Unmarshal decodes object from bytes | ||||||
| func Unmarshal(data []byte, v interface{}) error { | func Unmarshal(data []byte, v any) error { | ||||||
| 	return DefaultJSONHandler.Unmarshal(data, v) | 	return DefaultJSONHandler.Unmarshal(data, v) | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -124,7 +124,7 @@ func Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| // MarshalIndent copied from encoding/json | // MarshalIndent copied from encoding/json | ||||||
| func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error) { | func MarshalIndent(v any, prefix, indent string) ([]byte, error) { | ||||||
| 	b, err := Marshal(v) | 	b, err := Marshal(v) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| @@ -144,7 +144,7 @@ func Valid(data []byte) bool { | |||||||
|  |  | ||||||
| // UnmarshalHandleDoubleEncode - due to a bug in xorm (see https://gitea.com/xorm/xorm/pulls/1957) - it's | // UnmarshalHandleDoubleEncode - due to a bug in xorm (see https://gitea.com/xorm/xorm/pulls/1957) - it's | ||||||
| // possible that a Blob may be double encoded or gain an unwanted prefix of 0xff 0xfe. | // possible that a Blob may be double encoded or gain an unwanted prefix of 0xff 0xfe. | ||||||
| func UnmarshalHandleDoubleEncode(bs []byte, v interface{}) error { | func UnmarshalHandleDoubleEncode(bs []byte, v any) error { | ||||||
| 	err := json.Unmarshal(bs, v) | 	err := json.Unmarshal(bs, v) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		ok := true | 		ok := true | ||||||
|   | |||||||
| @@ -120,7 +120,7 @@ func TestRender_IssueIndexPattern2(t *testing.T) { | |||||||
| 			isExternal = true | 			isExternal = true | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		links := make([]interface{}, len(indices)) | 		links := make([]any, len(indices)) | ||||||
| 		for i, index := range indices { | 		for i, index := range indices { | ||||||
| 			links[i] = numericIssueLink(util.URLJoin(TestRepoURL, path), "ref-issue", index, marker) | 			links[i] = numericIssueLink(util.URLJoin(TestRepoURL, path), "ref-issue", index, marker) | ||||||
| 		} | 		} | ||||||
| @@ -204,7 +204,7 @@ func TestRender_IssueIndexPattern4(t *testing.T) { | |||||||
|  |  | ||||||
| 	// alphanumeric: render inputs with valid mentions | 	// alphanumeric: render inputs with valid mentions | ||||||
| 	test := func(s, expectedFmt string, names ...string) { | 	test := func(s, expectedFmt string, names ...string) { | ||||||
| 		links := make([]interface{}, len(names)) | 		links := make([]any, len(names)) | ||||||
| 		for i, name := range names { | 		for i, name := range names { | ||||||
| 			links[i] = externalIssueLink("https://someurl.com/someUser/someRepo/", "ref-issue ref-external-issue", name) | 			links[i] = externalIssueLink("https://someurl.com/someUser/someRepo/", "ref-issue ref-external-issue", name) | ||||||
| 		} | 		} | ||||||
| @@ -226,7 +226,7 @@ func TestRender_IssueIndexPattern5(t *testing.T) { | |||||||
| 	test := func(s, expectedFmt, pattern string, ids, names []string) { | 	test := func(s, expectedFmt, pattern string, ids, names []string) { | ||||||
| 		metas := regexpMetas | 		metas := regexpMetas | ||||||
| 		metas["regexp"] = pattern | 		metas["regexp"] = pattern | ||||||
| 		links := make([]interface{}, len(ids)) | 		links := make([]any, len(ids)) | ||||||
| 		for i, id := range ids { | 		for i, id := range ids { | ||||||
| 			links[i] = link(util.URLJoin("https://someurl.com/someUser/someRepo/", id), "ref-issue ref-external-issue", names[i]) | 			links[i] = link(util.URLJoin("https://someurl.com/someUser/someRepo/", id), "ref-issue ref-external-issue", names[i]) | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -55,14 +55,14 @@ func isYAMLSeparator(line []byte) bool { | |||||||
|  |  | ||||||
| // ExtractMetadata consumes a markdown file, parses YAML frontmatter, | // ExtractMetadata consumes a markdown file, parses YAML frontmatter, | ||||||
| // and returns the frontmatter metadata separated from the markdown content | // and returns the frontmatter metadata separated from the markdown content | ||||||
| func ExtractMetadata(contents string, out interface{}) (string, error) { | func ExtractMetadata(contents string, out any) (string, error) { | ||||||
| 	body, err := ExtractMetadataBytes([]byte(contents), out) | 	body, err := ExtractMetadataBytes([]byte(contents), out) | ||||||
| 	return string(body), err | 	return string(body), err | ||||||
| } | } | ||||||
|  |  | ||||||
| // ExtractMetadata consumes a markdown file, parses YAML frontmatter, | // ExtractMetadata consumes a markdown file, parses YAML frontmatter, | ||||||
| // and returns the frontmatter metadata separated from the markdown content | // and returns the frontmatter metadata separated from the markdown content | ||||||
| func ExtractMetadataBytes(contents []byte, out interface{}) ([]byte, error) { | func ExtractMetadataBytes(contents []byte, out any) ([]byte, error) { | ||||||
| 	var front, body []byte | 	var front, body []byte | ||||||
|  |  | ||||||
| 	start, end := 0, len(contents) | 	start, end := 0, len(contents) | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ type Comment struct { | |||||||
| 	Updated     time.Time | 	Updated     time.Time | ||||||
| 	Content     string | 	Content     string | ||||||
| 	Reactions   []*Reaction | 	Reactions   []*Reaction | ||||||
| 	Meta        map[string]interface{} `yaml:"meta,omitempty"` // see models/issues/comment.go for fields in Comment struct | 	Meta        map[string]any `yaml:"meta,omitempty"` // see models/issues/comment.go for fields in Comment struct | ||||||
| } | } | ||||||
|  |  | ||||||
| // GetExternalName ExternalUserMigrated interface | // GetExternalName ExternalUserMigrated interface | ||||||
|   | |||||||
| @@ -34,4 +34,4 @@ type DownloaderFactory interface { | |||||||
| } | } | ||||||
|  |  | ||||||
| // DownloaderContext has opaque information only relevant to a given downloader | // DownloaderContext has opaque information only relevant to a given downloader | ||||||
| type DownloaderContext interface{} | type DownloaderContext any | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ import ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| // Load project data from file, with optional validation | // Load project data from file, with optional validation | ||||||
| func Load(filename string, data interface{}, validation bool) error { | func Load(filename string, data any, validation bool) error { | ||||||
| 	isJSON := strings.HasSuffix(filename, ".json") | 	isJSON := strings.HasSuffix(filename, ".json") | ||||||
|  |  | ||||||
| 	bs, err := os.ReadFile(filename) | 	bs, err := os.ReadFile(filename) | ||||||
| @@ -34,7 +34,7 @@ func Load(filename string, data interface{}, validation bool) error { | |||||||
| 	return unmarshal(bs, data, isJSON) | 	return unmarshal(bs, data, isJSON) | ||||||
| } | } | ||||||
|  |  | ||||||
| func unmarshal(bs []byte, data interface{}, isJSON bool) error { | func unmarshal(bs []byte, data any, isJSON bool) error { | ||||||
| 	if isJSON { | 	if isJSON { | ||||||
| 		return json.Unmarshal(bs, data) | 		return json.Unmarshal(bs, data) | ||||||
| 	} | 	} | ||||||
| @@ -47,8 +47,8 @@ func getSchema(filename string) (*jsonschema.Schema, error) { | |||||||
| 	return c.Compile(filename) | 	return c.Compile(filename) | ||||||
| } | } | ||||||
|  |  | ||||||
| func validate(bs []byte, datatype interface{}, isJSON bool) error { | func validate(bs []byte, datatype any, isJSON bool) error { | ||||||
| 	var v interface{} | 	var v any | ||||||
| 	err := unmarshal(bs, &v, isJSON) | 	err := unmarshal(bs, &v, isJSON) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| @@ -81,11 +81,11 @@ func validate(bs []byte, datatype interface{}, isJSON bool) error { | |||||||
| 	return err | 	return err | ||||||
| } | } | ||||||
|  |  | ||||||
| func toStringKeys(val interface{}) (interface{}, error) { | func toStringKeys(val any) (any, error) { | ||||||
| 	var err error | 	var err error | ||||||
| 	switch val := val.(type) { | 	switch val := val.(type) { | ||||||
| 	case map[string]interface{}: | 	case map[string]any: | ||||||
| 		m := make(map[string]interface{}) | 		m := make(map[string]any) | ||||||
| 		for k, v := range val { | 		for k, v := range val { | ||||||
| 			m[k], err = toStringKeys(v) | 			m[k], err = toStringKeys(v) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| @@ -93,8 +93,8 @@ func toStringKeys(val interface{}) (interface{}, error) { | |||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		return m, nil | 		return m, nil | ||||||
| 	case []interface{}: | 	case []any: | ||||||
| 		l := make([]interface{}, len(val)) | 		l := make([]any, len(val)) | ||||||
| 		for i, v := range val { | 		for i, v := range val { | ||||||
| 			l[i], err = toStringKeys(v) | 			l[i], err = toStringKeys(v) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ | |||||||
| package migration | package migration | ||||||
|  |  | ||||||
| // Messenger is a formatting function similar to i18n.Tr | // Messenger is a formatting function similar to i18n.Tr | ||||||
| type Messenger func(key string, args ...interface{}) | type Messenger func(key string, args ...any) | ||||||
|  |  | ||||||
| // NilMessenger represents an empty formatting function | // NilMessenger represents an empty formatting function | ||||||
| func NilMessenger(string, ...interface{}) {} | func NilMessenger(string, ...any) {} | ||||||
|   | |||||||
| @@ -54,7 +54,7 @@ func (m *Manager) GetLevelDB(connection string) (db *leveldb.DB, err error) { | |||||||
| 	// Because we want associate any goroutines created by this call to the main nosqldb context we need to | 	// Because we want associate any goroutines created by this call to the main nosqldb context we need to | ||||||
| 	// wrap this in a goroutine labelled with the nosqldb context | 	// wrap this in a goroutine labelled with the nosqldb context | ||||||
| 	done := make(chan struct{}) | 	done := make(chan struct{}) | ||||||
| 	var recovered interface{} | 	var recovered any | ||||||
| 	go func() { | 	go func() { | ||||||
| 		defer func() { | 		defer func() { | ||||||
| 			recovered = recover() | 			recovered = recover() | ||||||
|   | |||||||
| @@ -47,7 +47,7 @@ func (m *Manager) GetRedisClient(connection string) (client redis.UniversalClien | |||||||
| 	// Because we want associate any goroutines created by this call to the main nosqldb context we need to | 	// Because we want associate any goroutines created by this call to the main nosqldb context we need to | ||||||
| 	// wrap this in a goroutine labelled with the nosqldb context | 	// wrap this in a goroutine labelled with the nosqldb context | ||||||
| 	done := make(chan struct{}) | 	done := make(chan struct{}) | ||||||
| 	var recovered interface{} | 	var recovered any | ||||||
| 	go func() { | 	go func() { | ||||||
| 		defer func() { | 		defer func() { | ||||||
| 			recovered = recover() | 			recovered = recover() | ||||||
|   | |||||||
| @@ -38,18 +38,18 @@ type Package struct { | |||||||
|  |  | ||||||
| // Metadata represents the metadata of a Composer package | // Metadata represents the metadata of a Composer package | ||||||
| type Metadata struct { | type Metadata struct { | ||||||
| 	Description string                 `json:"description,omitempty"` | 	Description string            `json:"description,omitempty"` | ||||||
| 	Keywords    []string               `json:"keywords,omitempty"` | 	Keywords    []string          `json:"keywords,omitempty"` | ||||||
| 	Homepage    string                 `json:"homepage,omitempty"` | 	Homepage    string            `json:"homepage,omitempty"` | ||||||
| 	License     Licenses               `json:"license,omitempty"` | 	License     Licenses          `json:"license,omitempty"` | ||||||
| 	Authors     []Author               `json:"authors,omitempty"` | 	Authors     []Author          `json:"authors,omitempty"` | ||||||
| 	Autoload    map[string]interface{} `json:"autoload,omitempty"` | 	Autoload    map[string]any    `json:"autoload,omitempty"` | ||||||
| 	AutoloadDev map[string]interface{} `json:"autoload-dev,omitempty"` | 	AutoloadDev map[string]any    `json:"autoload-dev,omitempty"` | ||||||
| 	Extra       map[string]interface{} `json:"extra,omitempty"` | 	Extra       map[string]any    `json:"extra,omitempty"` | ||||||
| 	Require     map[string]string      `json:"require,omitempty"` | 	Require     map[string]string `json:"require,omitempty"` | ||||||
| 	RequireDev  map[string]string      `json:"require-dev,omitempty"` | 	RequireDev  map[string]string `json:"require-dev,omitempty"` | ||||||
| 	Suggest     map[string]string      `json:"suggest,omitempty"` | 	Suggest     map[string]string `json:"suggest,omitempty"` | ||||||
| 	Provide     map[string]string      `json:"provide,omitempty"` | 	Provide     map[string]string `json:"provide,omitempty"` | ||||||
| } | } | ||||||
|  |  | ||||||
| // Licenses represents the licenses of a Composer package | // Licenses represents the licenses of a Composer package | ||||||
|   | |||||||
| @@ -55,14 +55,14 @@ type Maintainer struct { | |||||||
| } | } | ||||||
|  |  | ||||||
| type Dependency struct { | type Dependency struct { | ||||||
| 	Name         string        `json:"name" yaml:"name"` | 	Name         string   `json:"name" yaml:"name"` | ||||||
| 	Version      string        `json:"version,omitempty" yaml:"version,omitempty"` | 	Version      string   `json:"version,omitempty" yaml:"version,omitempty"` | ||||||
| 	Repository   string        `json:"repository" yaml:"repository"` | 	Repository   string   `json:"repository" yaml:"repository"` | ||||||
| 	Condition    string        `json:"condition,omitempty" yaml:"condition,omitempty"` | 	Condition    string   `json:"condition,omitempty" yaml:"condition,omitempty"` | ||||||
| 	Tags         []string      `json:"tags,omitempty" yaml:"tags,omitempty"` | 	Tags         []string `json:"tags,omitempty" yaml:"tags,omitempty"` | ||||||
| 	Enabled      bool          `json:"enabled,omitempty" yaml:"enabled,omitempty"` | 	Enabled      bool     `json:"enabled,omitempty" yaml:"enabled,omitempty"` | ||||||
| 	ImportValues []interface{} `json:"import_values,omitempty" yaml:"import-values,omitempty"` | 	ImportValues []any    `json:"import_values,omitempty" yaml:"import-values,omitempty"` | ||||||
| 	Alias        string        `json:"alias,omitempty" yaml:"alias,omitempty"` | 	Alias        string   `json:"alias,omitempty" yaml:"alias,omitempty"` | ||||||
| } | } | ||||||
|  |  | ||||||
| // ParseChartArchive parses the metadata of a Helm archive | // ParseChartArchive parses the metadata of a Helm archive | ||||||
|   | |||||||
| @@ -38,12 +38,12 @@ type Package struct { | |||||||
|  |  | ||||||
| // Metadata represents the metadata of a Pub package | // Metadata represents the metadata of a Pub package | ||||||
| type Metadata struct { | type Metadata struct { | ||||||
| 	Description      string      `json:"description,omitempty"` | 	Description      string `json:"description,omitempty"` | ||||||
| 	ProjectURL       string      `json:"project_url,omitempty"` | 	ProjectURL       string `json:"project_url,omitempty"` | ||||||
| 	RepositoryURL    string      `json:"repository_url,omitempty"` | 	RepositoryURL    string `json:"repository_url,omitempty"` | ||||||
| 	DocumentationURL string      `json:"documentation_url,omitempty"` | 	DocumentationURL string `json:"documentation_url,omitempty"` | ||||||
| 	Readme           string      `json:"readme,omitempty"` | 	Readme           string `json:"readme,omitempty"` | ||||||
| 	Pubspec          interface{} `json:"pubspec"` | 	Pubspec          any    `json:"pubspec"` | ||||||
| } | } | ||||||
|  |  | ||||||
| type pubspecPackage struct { | type pubspecPackage struct { | ||||||
| @@ -134,7 +134,7 @@ func ParsePubspecMetadata(r io.Reader) (*Package, error) { | |||||||
| 		p.Repository = "" | 		p.Repository = "" | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var pubspec interface{} | 	var pubspec any | ||||||
| 	if err := yaml.Unmarshal(buf, &pubspec); err != nil { | 	if err := yaml.Unmarshal(buf, &pubspec); err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -40,19 +40,19 @@ var ( | |||||||
| // RubyUserMarshal is a Ruby object that has a marshal_load function. | // RubyUserMarshal is a Ruby object that has a marshal_load function. | ||||||
| type RubyUserMarshal struct { | type RubyUserMarshal struct { | ||||||
| 	Name  string | 	Name  string | ||||||
| 	Value interface{} | 	Value any | ||||||
| } | } | ||||||
|  |  | ||||||
| // RubyUserDef is a Ruby object that has a _load function. | // RubyUserDef is a Ruby object that has a _load function. | ||||||
| type RubyUserDef struct { | type RubyUserDef struct { | ||||||
| 	Name  string | 	Name  string | ||||||
| 	Value interface{} | 	Value any | ||||||
| } | } | ||||||
|  |  | ||||||
| // RubyObject is a default Ruby object. | // RubyObject is a default Ruby object. | ||||||
| type RubyObject struct { | type RubyObject struct { | ||||||
| 	Name   string | 	Name   string | ||||||
| 	Member map[string]interface{} | 	Member map[string]any | ||||||
| } | } | ||||||
|  |  | ||||||
| // MarshalEncoder mimics Rubys Marshal class. | // MarshalEncoder mimics Rubys Marshal class. | ||||||
| @@ -71,7 +71,7 @@ func NewMarshalEncoder(w io.Writer) *MarshalEncoder { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Encode encodes the given type | // Encode encodes the given type | ||||||
| func (e *MarshalEncoder) Encode(v interface{}) error { | func (e *MarshalEncoder) Encode(v any) error { | ||||||
| 	if _, err := e.w.Write([]byte{majorVersion, minorVersion}); err != nil { | 	if _, err := e.w.Write([]byte{majorVersion, minorVersion}); err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| @@ -83,7 +83,7 @@ func (e *MarshalEncoder) Encode(v interface{}) error { | |||||||
| 	return e.w.Flush() | 	return e.w.Flush() | ||||||
| } | } | ||||||
|  |  | ||||||
| func (e *MarshalEncoder) marshal(v interface{}) error { | func (e *MarshalEncoder) marshal(v any) error { | ||||||
| 	if v == nil { | 	if v == nil { | ||||||
| 		return e.marshalNil() | 		return e.marshalNil() | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ import ( | |||||||
|  |  | ||||||
| func TestMinimalEncoder(t *testing.T) { | func TestMinimalEncoder(t *testing.T) { | ||||||
| 	cases := []struct { | 	cases := []struct { | ||||||
| 		Value    interface{} | 		Value    any | ||||||
| 		Expected []byte | 		Expected []byte | ||||||
| 		Error    error | 		Error    error | ||||||
| 	}{ | 	}{ | ||||||
| @@ -73,7 +73,7 @@ func TestMinimalEncoder(t *testing.T) { | |||||||
| 		{ | 		{ | ||||||
| 			Value: &RubyObject{ | 			Value: &RubyObject{ | ||||||
| 				Name: "Test", | 				Name: "Test", | ||||||
| 				Member: map[string]interface{}{ | 				Member: map[string]any{ | ||||||
| 					"test": 4, | 					"test": 4, | ||||||
| 				}, | 				}, | ||||||
| 			}, | 			}, | ||||||
|   | |||||||
| @@ -65,12 +65,12 @@ type gemspec struct { | |||||||
| 	Version struct { | 	Version struct { | ||||||
| 		Version string `yaml:"version"` | 		Version string `yaml:"version"` | ||||||
| 	} `yaml:"version"` | 	} `yaml:"version"` | ||||||
| 	Platform     string        `yaml:"platform"` | 	Platform     string   `yaml:"platform"` | ||||||
| 	Authors      []string      `yaml:"authors"` | 	Authors      []string `yaml:"authors"` | ||||||
| 	Autorequire  interface{}   `yaml:"autorequire"` | 	Autorequire  any      `yaml:"autorequire"` | ||||||
| 	Bindir       string        `yaml:"bindir"` | 	Bindir       string   `yaml:"bindir"` | ||||||
| 	CertChain    []interface{} `yaml:"cert_chain"` | 	CertChain    []any    `yaml:"cert_chain"` | ||||||
| 	Date         string        `yaml:"date"` | 	Date         string   `yaml:"date"` | ||||||
| 	Dependencies []struct { | 	Dependencies []struct { | ||||||
| 		Name                string      `yaml:"name"` | 		Name                string      `yaml:"name"` | ||||||
| 		Requirement         requirement `yaml:"requirement"` | 		Requirement         requirement `yaml:"requirement"` | ||||||
| @@ -78,34 +78,34 @@ type gemspec struct { | |||||||
| 		Prerelease          bool        `yaml:"prerelease"` | 		Prerelease          bool        `yaml:"prerelease"` | ||||||
| 		VersionRequirements requirement `yaml:"version_requirements"` | 		VersionRequirements requirement `yaml:"version_requirements"` | ||||||
| 	} `yaml:"dependencies"` | 	} `yaml:"dependencies"` | ||||||
| 	Description    string        `yaml:"description"` | 	Description    string   `yaml:"description"` | ||||||
| 	Executables    []string      `yaml:"executables"` | 	Executables    []string `yaml:"executables"` | ||||||
| 	Extensions     []interface{} `yaml:"extensions"` | 	Extensions     []any    `yaml:"extensions"` | ||||||
| 	ExtraRdocFiles []string      `yaml:"extra_rdoc_files"` | 	ExtraRdocFiles []string `yaml:"extra_rdoc_files"` | ||||||
| 	Files          []string      `yaml:"files"` | 	Files          []string `yaml:"files"` | ||||||
| 	Homepage       string        `yaml:"homepage"` | 	Homepage       string   `yaml:"homepage"` | ||||||
| 	Licenses       []string      `yaml:"licenses"` | 	Licenses       []string `yaml:"licenses"` | ||||||
| 	Metadata       struct { | 	Metadata       struct { | ||||||
| 		BugTrackerURI    string `yaml:"bug_tracker_uri"` | 		BugTrackerURI    string `yaml:"bug_tracker_uri"` | ||||||
| 		ChangelogURI     string `yaml:"changelog_uri"` | 		ChangelogURI     string `yaml:"changelog_uri"` | ||||||
| 		DocumentationURI string `yaml:"documentation_uri"` | 		DocumentationURI string `yaml:"documentation_uri"` | ||||||
| 		SourceCodeURI    string `yaml:"source_code_uri"` | 		SourceCodeURI    string `yaml:"source_code_uri"` | ||||||
| 	} `yaml:"metadata"` | 	} `yaml:"metadata"` | ||||||
| 	PostInstallMessage      interface{}   `yaml:"post_install_message"` | 	PostInstallMessage      any         `yaml:"post_install_message"` | ||||||
| 	RdocOptions             []interface{} `yaml:"rdoc_options"` | 	RdocOptions             []any       `yaml:"rdoc_options"` | ||||||
| 	RequirePaths            []string      `yaml:"require_paths"` | 	RequirePaths            []string    `yaml:"require_paths"` | ||||||
| 	RequiredRubyVersion     requirement   `yaml:"required_ruby_version"` | 	RequiredRubyVersion     requirement `yaml:"required_ruby_version"` | ||||||
| 	RequiredRubygemsVersion requirement   `yaml:"required_rubygems_version"` | 	RequiredRubygemsVersion requirement `yaml:"required_rubygems_version"` | ||||||
| 	Requirements            []interface{} `yaml:"requirements"` | 	Requirements            []any       `yaml:"requirements"` | ||||||
| 	RubygemsVersion         string        `yaml:"rubygems_version"` | 	RubygemsVersion         string      `yaml:"rubygems_version"` | ||||||
| 	SigningKey              interface{}   `yaml:"signing_key"` | 	SigningKey              any         `yaml:"signing_key"` | ||||||
| 	SpecificationVersion    int           `yaml:"specification_version"` | 	SpecificationVersion    int         `yaml:"specification_version"` | ||||||
| 	Summary                 string        `yaml:"summary"` | 	Summary                 string      `yaml:"summary"` | ||||||
| 	TestFiles               []interface{} `yaml:"test_files"` | 	TestFiles               []any       `yaml:"test_files"` | ||||||
| } | } | ||||||
|  |  | ||||||
| type requirement struct { | type requirement struct { | ||||||
| 	Requirements [][]interface{} `yaml:"requirements"` | 	Requirements [][]any `yaml:"requirements"` | ||||||
| } | } | ||||||
|  |  | ||||||
| // AsVersionRequirement converts into []VersionRequirement | // AsVersionRequirement converts into []VersionRequirement | ||||||
| @@ -119,7 +119,7 @@ func (r requirement) AsVersionRequirement() []VersionRequirement { | |||||||
| 		if !ok { | 		if !ok { | ||||||
| 			continue | 			continue | ||||||
| 		} | 		} | ||||||
| 		vm, ok := req[1].(map[string]interface{}) | 		vm, ok := req[1].(map[string]any) | ||||||
| 		if !ok { | 		if !ok { | ||||||
| 			continue | 			continue | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -85,11 +85,11 @@ type LoggerOptions struct { | |||||||
| 	Logger string | 	Logger string | ||||||
| 	Writer string | 	Writer string | ||||||
| 	Mode   string | 	Mode   string | ||||||
| 	Config map[string]interface{} | 	Config map[string]any | ||||||
| } | } | ||||||
|  |  | ||||||
| // AddLogger adds a logger | // AddLogger adds a logger | ||||||
| func AddLogger(ctx context.Context, logger, writer, mode string, config map[string]interface{}) ResponseExtra { | func AddLogger(ctx context.Context, logger, writer, mode string, config map[string]any) ResponseExtra { | ||||||
| 	reqURL := setting.LocalURL + "api/internal/manager/add-logger" | 	reqURL := setting.LocalURL + "api/internal/manager/add-logger" | ||||||
| 	req := newInternalRequest(ctx, reqURL, "POST", LoggerOptions{ | 	req := newInternalRequest(ctx, reqURL, "POST", LoggerOptions{ | ||||||
| 		Logger: logger, | 		Logger: logger, | ||||||
|   | |||||||
| @@ -24,7 +24,7 @@ func (c *Context) GetParent() *Context { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Value is part of the interface for context.Context. We mostly defer to the internal context - but we return this in response to the ProcessContextKey | // Value is part of the interface for context.Context. We mostly defer to the internal context - but we return this in response to the ProcessContextKey | ||||||
| func (c *Context) Value(key interface{}) interface{} { | func (c *Context) Value(key any) any { | ||||||
| 	if key == ProcessContextKey { | 	if key == ProcessContextKey { | ||||||
| 		return c | 		return c | ||||||
| 	} | 	} | ||||||
| @@ -32,7 +32,7 @@ func (c *Context) Value(key interface{}) interface{} { | |||||||
| } | } | ||||||
|  |  | ||||||
| // ProcessContextKey is the key under which process contexts are stored | // ProcessContextKey is the key under which process contexts are stored | ||||||
| var ProcessContextKey interface{} = "process-context" | var ProcessContextKey any = "process-context" | ||||||
|  |  | ||||||
| // GetContext will return a process context if one exists | // GetContext will return a process context if one exists | ||||||
| func GetContext(ctx context.Context) *Context { | func GetContext(ctx context.Context) *Context { | ||||||
|   | |||||||
| @@ -17,11 +17,11 @@ import ( | |||||||
| type DBStore struct { | type DBStore struct { | ||||||
| 	sid  string | 	sid  string | ||||||
| 	lock sync.RWMutex | 	lock sync.RWMutex | ||||||
| 	data map[interface{}]interface{} | 	data map[any]any | ||||||
| } | } | ||||||
|  |  | ||||||
| // NewDBStore creates and returns a DB session store. | // NewDBStore creates and returns a DB session store. | ||||||
| func NewDBStore(sid string, kv map[interface{}]interface{}) *DBStore { | func NewDBStore(sid string, kv map[any]any) *DBStore { | ||||||
| 	return &DBStore{ | 	return &DBStore{ | ||||||
| 		sid:  sid, | 		sid:  sid, | ||||||
| 		data: kv, | 		data: kv, | ||||||
| @@ -29,7 +29,7 @@ func NewDBStore(sid string, kv map[interface{}]interface{}) *DBStore { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Set sets value to given key in session. | // Set sets value to given key in session. | ||||||
| func (s *DBStore) Set(key, val interface{}) error { | func (s *DBStore) Set(key, val any) error { | ||||||
| 	s.lock.Lock() | 	s.lock.Lock() | ||||||
| 	defer s.lock.Unlock() | 	defer s.lock.Unlock() | ||||||
|  |  | ||||||
| @@ -38,7 +38,7 @@ func (s *DBStore) Set(key, val interface{}) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Get gets value by given key in session. | // Get gets value by given key in session. | ||||||
| func (s *DBStore) Get(key interface{}) interface{} { | func (s *DBStore) Get(key any) any { | ||||||
| 	s.lock.RLock() | 	s.lock.RLock() | ||||||
| 	defer s.lock.RUnlock() | 	defer s.lock.RUnlock() | ||||||
|  |  | ||||||
| @@ -46,7 +46,7 @@ func (s *DBStore) Get(key interface{}) interface{} { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Delete delete a key from session. | // Delete delete a key from session. | ||||||
| func (s *DBStore) Delete(key interface{}) error { | func (s *DBStore) Delete(key any) error { | ||||||
| 	s.lock.Lock() | 	s.lock.Lock() | ||||||
| 	defer s.lock.Unlock() | 	defer s.lock.Unlock() | ||||||
|  |  | ||||||
| @@ -79,7 +79,7 @@ func (s *DBStore) Flush() error { | |||||||
| 	s.lock.Lock() | 	s.lock.Lock() | ||||||
| 	defer s.lock.Unlock() | 	defer s.lock.Unlock() | ||||||
|  |  | ||||||
| 	s.data = make(map[interface{}]interface{}) | 	s.data = make(map[any]any) | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -102,9 +102,9 @@ func (p *DBProvider) Read(sid string) (session.RawStore, error) { | |||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var kv map[interface{}]interface{} | 	var kv map[any]any | ||||||
| 	if len(s.Data) == 0 || s.Expiry.Add(p.maxLifetime) <= timeutil.TimeStampNow() { | 	if len(s.Data) == 0 || s.Expiry.Add(p.maxLifetime) <= timeutil.TimeStampNow() { | ||||||
| 		kv = make(map[interface{}]interface{}) | 		kv = make(map[any]any) | ||||||
| 	} else { | 	} else { | ||||||
| 		kv, err = session.DecodeGob(s.Data) | 		kv, err = session.DecodeGob(s.Data) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| @@ -136,9 +136,9 @@ func (p *DBProvider) Regenerate(oldsid, sid string) (_ session.RawStore, err err | |||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var kv map[interface{}]interface{} | 	var kv map[any]any | ||||||
| 	if len(s.Data) == 0 || s.Expiry.Add(p.maxLifetime) <= timeutil.TimeStampNow() { | 	if len(s.Data) == 0 || s.Expiry.Add(p.maxLifetime) <= timeutil.TimeStampNow() { | ||||||
| 		kv = make(map[interface{}]interface{}) | 		kv = make(map[any]any) | ||||||
| 	} else { | 	} else { | ||||||
| 		kv, err = session.DecodeGob(s.Data) | 		kv, err = session.DecodeGob(s.Data) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
|   | |||||||
| @@ -35,11 +35,11 @@ type RedisStore struct { | |||||||
| 	prefix, sid string | 	prefix, sid string | ||||||
| 	duration    time.Duration | 	duration    time.Duration | ||||||
| 	lock        sync.RWMutex | 	lock        sync.RWMutex | ||||||
| 	data        map[interface{}]interface{} | 	data        map[any]any | ||||||
| } | } | ||||||
|  |  | ||||||
| // NewRedisStore creates and returns a redis session store. | // NewRedisStore creates and returns a redis session store. | ||||||
| func NewRedisStore(c redis.UniversalClient, prefix, sid string, dur time.Duration, kv map[interface{}]interface{}) *RedisStore { | func NewRedisStore(c redis.UniversalClient, prefix, sid string, dur time.Duration, kv map[any]any) *RedisStore { | ||||||
| 	return &RedisStore{ | 	return &RedisStore{ | ||||||
| 		c:        c, | 		c:        c, | ||||||
| 		prefix:   prefix, | 		prefix:   prefix, | ||||||
| @@ -50,7 +50,7 @@ func NewRedisStore(c redis.UniversalClient, prefix, sid string, dur time.Duratio | |||||||
| } | } | ||||||
|  |  | ||||||
| // Set sets value to given key in session. | // Set sets value to given key in session. | ||||||
| func (s *RedisStore) Set(key, val interface{}) error { | func (s *RedisStore) Set(key, val any) error { | ||||||
| 	s.lock.Lock() | 	s.lock.Lock() | ||||||
| 	defer s.lock.Unlock() | 	defer s.lock.Unlock() | ||||||
|  |  | ||||||
| @@ -59,7 +59,7 @@ func (s *RedisStore) Set(key, val interface{}) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Get gets value by given key in session. | // Get gets value by given key in session. | ||||||
| func (s *RedisStore) Get(key interface{}) interface{} { | func (s *RedisStore) Get(key any) any { | ||||||
| 	s.lock.RLock() | 	s.lock.RLock() | ||||||
| 	defer s.lock.RUnlock() | 	defer s.lock.RUnlock() | ||||||
|  |  | ||||||
| @@ -67,7 +67,7 @@ func (s *RedisStore) Get(key interface{}) interface{} { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Delete delete a key from session. | // Delete delete a key from session. | ||||||
| func (s *RedisStore) Delete(key interface{}) error { | func (s *RedisStore) Delete(key any) error { | ||||||
| 	s.lock.Lock() | 	s.lock.Lock() | ||||||
| 	defer s.lock.Unlock() | 	defer s.lock.Unlock() | ||||||
|  |  | ||||||
| @@ -100,7 +100,7 @@ func (s *RedisStore) Flush() error { | |||||||
| 	s.lock.Lock() | 	s.lock.Lock() | ||||||
| 	defer s.lock.Unlock() | 	defer s.lock.Unlock() | ||||||
|  |  | ||||||
| 	s.data = make(map[interface{}]interface{}) | 	s.data = make(map[any]any) | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -141,13 +141,13 @@ func (p *RedisProvider) Read(sid string) (session.RawStore, error) { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var kv map[interface{}]interface{} | 	var kv map[any]any | ||||||
| 	kvs, err := p.c.Get(graceful.GetManager().HammerContext(), psid).Result() | 	kvs, err := p.c.Get(graceful.GetManager().HammerContext(), psid).Result() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 	if len(kvs) == 0 { | 	if len(kvs) == 0 { | ||||||
| 		kv = make(map[interface{}]interface{}) | 		kv = make(map[any]any) | ||||||
| 	} else { | 	} else { | ||||||
| 		kv, err = session.DecodeGob([]byte(kvs)) | 		kv, err = session.DecodeGob([]byte(kvs)) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| @@ -197,9 +197,9 @@ func (p *RedisProvider) Regenerate(oldsid, sid string) (_ session.RawStore, err | |||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var kv map[interface{}]interface{} | 	var kv map[any]any | ||||||
| 	if len(kvs) == 0 { | 	if len(kvs) == 0 { | ||||||
| 		kv = make(map[interface{}]interface{}) | 		kv = make(map[any]any) | ||||||
| 	} else { | 	} else { | ||||||
| 		kv, err = session.DecodeGob([]byte(kvs)) | 		kv, err = session.DecodeGob([]byte(kvs)) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
|   | |||||||
| @@ -11,9 +11,9 @@ import ( | |||||||
|  |  | ||||||
| // Store represents a session store | // Store represents a session store | ||||||
| type Store interface { | type Store interface { | ||||||
| 	Get(interface{}) interface{} | 	Get(any) any | ||||||
| 	Set(interface{}, interface{}) error | 	Set(any, any) error | ||||||
| 	Delete(interface{}) error | 	Delete(any) error | ||||||
| } | } | ||||||
|  |  | ||||||
| // RegenerateSession regenerates the underlying session and returns the new store | // RegenerateSession regenerates the underlying session and returns the new store | ||||||
|   | |||||||
| @@ -62,7 +62,7 @@ func (o *VirtualSessionProvider) Read(sid string) (session.RawStore, error) { | |||||||
| 	if o.provider.Exist(sid) { | 	if o.provider.Exist(sid) { | ||||||
| 		return o.provider.Read(sid) | 		return o.provider.Read(sid) | ||||||
| 	} | 	} | ||||||
| 	kv := make(map[interface{}]interface{}) | 	kv := make(map[any]any) | ||||||
| 	kv["_old_uid"] = "0" | 	kv["_old_uid"] = "0" | ||||||
| 	return NewVirtualStore(o, sid, kv), nil | 	return NewVirtualStore(o, sid, kv), nil | ||||||
| } | } | ||||||
| @@ -107,12 +107,12 @@ type VirtualStore struct { | |||||||
| 	p        *VirtualSessionProvider | 	p        *VirtualSessionProvider | ||||||
| 	sid      string | 	sid      string | ||||||
| 	lock     sync.RWMutex | 	lock     sync.RWMutex | ||||||
| 	data     map[interface{}]interface{} | 	data     map[any]any | ||||||
| 	released bool | 	released bool | ||||||
| } | } | ||||||
|  |  | ||||||
| // NewVirtualStore creates and returns a virtual session store. | // NewVirtualStore creates and returns a virtual session store. | ||||||
| func NewVirtualStore(p *VirtualSessionProvider, sid string, kv map[interface{}]interface{}) *VirtualStore { | func NewVirtualStore(p *VirtualSessionProvider, sid string, kv map[any]any) *VirtualStore { | ||||||
| 	return &VirtualStore{ | 	return &VirtualStore{ | ||||||
| 		p:    p, | 		p:    p, | ||||||
| 		sid:  sid, | 		sid:  sid, | ||||||
| @@ -121,7 +121,7 @@ func NewVirtualStore(p *VirtualSessionProvider, sid string, kv map[interface{}]i | |||||||
| } | } | ||||||
|  |  | ||||||
| // Set sets value to given key in session. | // Set sets value to given key in session. | ||||||
| func (s *VirtualStore) Set(key, val interface{}) error { | func (s *VirtualStore) Set(key, val any) error { | ||||||
| 	s.lock.Lock() | 	s.lock.Lock() | ||||||
| 	defer s.lock.Unlock() | 	defer s.lock.Unlock() | ||||||
|  |  | ||||||
| @@ -130,7 +130,7 @@ func (s *VirtualStore) Set(key, val interface{}) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Get gets value by given key in session. | // Get gets value by given key in session. | ||||||
| func (s *VirtualStore) Get(key interface{}) interface{} { | func (s *VirtualStore) Get(key any) any { | ||||||
| 	s.lock.RLock() | 	s.lock.RLock() | ||||||
| 	defer s.lock.RUnlock() | 	defer s.lock.RUnlock() | ||||||
|  |  | ||||||
| @@ -138,7 +138,7 @@ func (s *VirtualStore) Get(key interface{}) interface{} { | |||||||
| } | } | ||||||
|  |  | ||||||
| // Delete delete a key from session. | // Delete delete a key from session. | ||||||
| func (s *VirtualStore) Delete(key interface{}) error { | func (s *VirtualStore) Delete(key any) error { | ||||||
| 	s.lock.Lock() | 	s.lock.Lock() | ||||||
| 	defer s.lock.Unlock() | 	defer s.lock.Unlock() | ||||||
|  |  | ||||||
| @@ -192,6 +192,6 @@ func (s *VirtualStore) Flush() error { | |||||||
| 	s.lock.Lock() | 	s.lock.Lock() | ||||||
| 	defer s.lock.Unlock() | 	defer s.lock.Unlock() | ||||||
|  |  | ||||||
| 	s.data = make(map[interface{}]interface{}) | 	s.data = make(map[any]any) | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|   | |||||||
| @@ -6,11 +6,11 @@ package setting | |||||||
| import "reflect" | import "reflect" | ||||||
|  |  | ||||||
| // GetCronSettings maps the cron subsection to the provided config | // GetCronSettings maps the cron subsection to the provided config | ||||||
| func GetCronSettings(name string, config interface{}) (interface{}, error) { | func GetCronSettings(name string, config any) (any, error) { | ||||||
| 	return getCronSettings(CfgProvider, name, config) | 	return getCronSettings(CfgProvider, name, config) | ||||||
| } | } | ||||||
|  |  | ||||||
| func getCronSettings(rootCfg ConfigProvider, name string, config interface{}) (interface{}, error) { | func getCronSettings(rootCfg ConfigProvider, name string, config any) (any, error) { | ||||||
| 	if err := rootCfg.Section("cron." + name).MapTo(config); err != nil { | 	if err := rootCfg.Section("cron." + name).MapTo(config); err != nil { | ||||||
| 		return config, err | 		return config, err | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -30,7 +30,7 @@ func initLoggersByConfig(t *testing.T, config string) (*log.LoggerManager, func( | |||||||
| 	return manager, manager.Close | 	return manager, manager.Close | ||||||
| } | } | ||||||
|  |  | ||||||
| func toJSON(v interface{}) string { | func toJSON(v any) string { | ||||||
| 	b, _ := json.MarshalIndent(v, "", "\t") | 	b, _ := json.MarshalIndent(v, "", "\t") | ||||||
| 	return string(b) | 	return string(b) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -173,7 +173,7 @@ func (m minioFileInfo) Mode() os.FileMode { | |||||||
| 	return os.ModePerm | 	return os.ModePerm | ||||||
| } | } | ||||||
|  |  | ||||||
| func (m minioFileInfo) Sys() interface{} { | func (m minioFileInfo) Sys() any { | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -20,7 +20,7 @@ var ErrURLNotSupported = errors.New("url method not supported") | |||||||
|  |  | ||||||
| // ErrInvalidConfiguration is called when there is invalid configuration for a storage | // ErrInvalidConfiguration is called when there is invalid configuration for a storage | ||||||
| type ErrInvalidConfiguration struct { | type ErrInvalidConfiguration struct { | ||||||
| 	cfg interface{} | 	cfg any | ||||||
| 	err error | 	err error | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -140,10 +140,10 @@ const ( | |||||||
| // IssueFormField represents a form field | // IssueFormField represents a form field | ||||||
| // swagger:model | // swagger:model | ||||||
| type IssueFormField struct { | type IssueFormField struct { | ||||||
| 	Type        IssueFormFieldType     `json:"type" yaml:"type"` | 	Type        IssueFormFieldType `json:"type" yaml:"type"` | ||||||
| 	ID          string                 `json:"id" yaml:"id"` | 	ID          string             `json:"id" yaml:"id"` | ||||||
| 	Attributes  map[string]interface{} `json:"attributes" yaml:"attributes"` | 	Attributes  map[string]any     `json:"attributes" yaml:"attributes"` | ||||||
| 	Validations map[string]interface{} `json:"validations" yaml:"validations"` | 	Validations map[string]any     `json:"validations" yaml:"validations"` | ||||||
| } | } | ||||||
|  |  | ||||||
| // IssueTemplate represents an issue template for a repository | // IssueTemplate represents an issue template for a repository | ||||||
|   | |||||||
| @@ -166,7 +166,7 @@ type FilesResponse struct { | |||||||
|  |  | ||||||
| // FileDeleteResponse contains information about a repo's file that was deleted | // FileDeleteResponse contains information about a repo's file that was deleted | ||||||
| type FileDeleteResponse struct { | type FileDeleteResponse struct { | ||||||
| 	Content      interface{}                `json:"content"` // to be set to nil | 	Content      any                        `json:"content"` // to be set to nil | ||||||
| 	Commit       *FileCommitResponse        `json:"commit"` | 	Commit       *FileCommitResponse        `json:"commit"` | ||||||
| 	Verification *PayloadCommitVerification `json:"verification"` | 	Verification *PayloadCommitVerification `json:"verification"` | ||||||
| } | } | ||||||
|   | |||||||
| @@ -9,10 +9,10 @@ import ( | |||||||
|  |  | ||||||
| // WatchInfo represents an API watch status of one repository | // WatchInfo represents an API watch status of one repository | ||||||
| type WatchInfo struct { | type WatchInfo struct { | ||||||
| 	Subscribed    bool        `json:"subscribed"` | 	Subscribed    bool      `json:"subscribed"` | ||||||
| 	Ignored       bool        `json:"ignored"` | 	Ignored       bool      `json:"ignored"` | ||||||
| 	Reason        interface{} `json:"reason"` | 	Reason        any       `json:"reason"` | ||||||
| 	CreatedAt     time.Time   `json:"created_at"` | 	CreatedAt     time.Time `json:"created_at"` | ||||||
| 	URL           string      `json:"url"` | 	URL           string    `json:"url"` | ||||||
| 	RepositoryURL string      `json:"repository_url"` | 	RepositoryURL string    `json:"repository_url"` | ||||||
| } | } | ||||||
|   | |||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 silverwind
					silverwind