feat: update gitea vendor
runner nix smoke / nix label and flake smoke (push) Failing after 1m28s

This commit is contained in:
2026-09-26 21:18:24 +00:00
parent c439c1b948
commit d9b2a4e787
3538 changed files with 116131 additions and 44340 deletions
+71 -14
View File
@@ -6,11 +6,16 @@ package util
import (
"bytes"
"crypto/rand"
"encoding/hex"
"fmt"
"math/big"
rand2 "math/rand/v2"
"slices"
"strconv"
"strings"
"sync"
"gitea.dev/modules/container"
"golang.org/x/text/cases"
"golang.org/x/text/language"
@@ -21,6 +26,11 @@ func IsEmptyString(s string) bool {
return len(strings.TrimSpace(s)) == 0
}
// ParseYamlBool parses YAML 1.2 boolean values into bool
func ParseYamlBool(s string) bool {
return s == "true" || s == "True" || s == "TRUE"
}
// NormalizeEOL will convert Windows (CRLF) and Mac (CR) EOLs to UNIX (LF)
func NormalizeEOL(input []byte) []byte {
var right, left, pos int
@@ -58,37 +68,60 @@ func NormalizeEOL(input []byte) []byte {
}
// CryptoRandomInt returns a crypto random integer between 0 and limit, inclusive
func CryptoRandomInt(limit int64) (int64, error) {
func CryptoRandomInt(limit int64) int64 {
rInt, err := rand.Int(rand.Reader, big.NewInt(limit))
if err != nil {
return 0, err
panic(err) // this should never happen
}
return rInt.Int64(), nil
return rInt.Int64()
}
const alphanumericalChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
// CryptoRandomString generates a crypto random alphanumerical string, each byte is generated by [0,61] range
func CryptoRandomString(length int64) (string, error) {
func CryptoRandomString(length int64) string {
const alphanumericalChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
buf := make([]byte, length)
limit := int64(len(alphanumericalChars))
for i := range buf {
num, err := CryptoRandomInt(limit)
if err != nil {
return "", err
}
num := CryptoRandomInt(limit)
buf[i] = alphanumericalChars[num]
}
return string(buf), nil
return string(buf)
}
// CryptoRandomBytes generates `length` crypto bytes
// This differs from CryptoRandomString, as each byte in CryptoRandomString is generated by [0,61] range
// This function generates totally random bytes, each byte is generated by [0,255] range
func CryptoRandomBytes(length int64) ([]byte, error) {
func CryptoRandomBytes(length int64) []byte {
buf := make([]byte, length)
_, err := rand.Read(buf)
return buf, err
if _, err := rand.Read(buf); err != nil {
panic(err) // this should never happen, "rand.Read" never fails
}
return buf
}
var chaCha8RandPool = sync.OnceValue(func() *sync.Pool {
return &sync.Pool{
New: func() any {
seed := CryptoRandomBytes(32)
return rand2.NewChaCha8([32]byte(seed))
},
}
})
func FastCryptoRandomBytes(length int) []byte {
// ChaCha8 is about 20x times faster than system's crypto/rand.
// It is suitable for UUIDs, session IDs, etc
pool := chaCha8RandPool()
chaCha8Rand := pool.Get().(*rand2.ChaCha8)
defer pool.Put(chaCha8Rand)
buf := make([]byte, length)
_, _ = chaCha8Rand.Read(buf)
return buf
}
func FastCryptoRandomHex(length int) string {
buf := FastCryptoRandomBytes(length / 2)
return hex.EncodeToString(buf)
}
// ToLowerASCII returns s with all ASCII letters mapped to their lower case.
@@ -265,3 +298,27 @@ func NormalizeStringEOL(input string) string {
// Other than this, we should respect the original content, even leading or trailing spaces.
return UnsafeBytesToString(NormalizeEOL(UnsafeStringToBytes(input)))
}
func DiffSlice[T comparable](oldSlice, newSlice []T) (added, removed []T) {
oldSet := container.SetOf(oldSlice...)
newSet := container.SetOf(newSlice...)
addedSet, removedSet := container.Set[T]{}, container.Set[T]{}
for _, v := range newSlice {
if !oldSet.Contains(v) && addedSet.Add(v) {
added = append(added, v)
}
}
for _, v := range oldSlice {
if !newSet.Contains(v) && removedSet.Add(v) {
removed = append(removed, v)
}
}
return added, removed
}
func MustNoError(err error) {
if err != nil {
panic(err)
}
}