mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[chore] update viper version (#2539)
* update viper version * removes our last uses of the slice package * fix tests
This commit is contained in:
50
vendor/github.com/subosito/gotenv/gotenv.go
generated
vendored
50
vendor/github.com/subosito/gotenv/gotenv.go
generated
vendored
@ -12,6 +12,9 @@ import (
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"golang.org/x/text/encoding/unicode"
|
||||
"golang.org/x/text/transform"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -20,9 +23,13 @@ const (
|
||||
|
||||
// Pattern for detecting valid variable within a value
|
||||
variablePattern = `(\\)?(\$)(\{?([A-Z0-9_]+)?\}?)`
|
||||
)
|
||||
|
||||
// Byte order mark character
|
||||
bom = "\xef\xbb\xbf"
|
||||
// Byte order mark character
|
||||
var (
|
||||
bomUTF8 = []byte("\xEF\xBB\xBF")
|
||||
bomUTF16LE = []byte("\xFF\xFE")
|
||||
bomUTF16BE = []byte("\xFE\xFF")
|
||||
)
|
||||
|
||||
// Env holds key/value pair of valid environment variable
|
||||
@ -203,19 +210,40 @@ func splitLines(data []byte, atEOF bool) (advance int, token []byte, err error)
|
||||
|
||||
func strictParse(r io.Reader, override bool) (Env, error) {
|
||||
env := make(Env)
|
||||
scanner := bufio.NewScanner(r)
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
tee := io.TeeReader(r, buf)
|
||||
|
||||
// There can be a maximum of 3 BOM bytes.
|
||||
bomByteBuffer := make([]byte, 3)
|
||||
_, err := tee.Read(bomByteBuffer)
|
||||
if err != nil && err != io.EOF {
|
||||
return env, err
|
||||
}
|
||||
|
||||
z := io.MultiReader(buf, r)
|
||||
|
||||
// We chooes a different scanner depending on file encoding.
|
||||
var scanner *bufio.Scanner
|
||||
|
||||
if bytes.HasPrefix(bomByteBuffer, bomUTF8) {
|
||||
scanner = bufio.NewScanner(transform.NewReader(z, unicode.UTF8BOM.NewDecoder()))
|
||||
} else if bytes.HasPrefix(bomByteBuffer, bomUTF16LE) {
|
||||
scanner = bufio.NewScanner(transform.NewReader(z, unicode.UTF16(unicode.LittleEndian, unicode.ExpectBOM).NewDecoder()))
|
||||
} else if bytes.HasPrefix(bomByteBuffer, bomUTF16BE) {
|
||||
scanner = bufio.NewScanner(transform.NewReader(z, unicode.UTF16(unicode.BigEndian, unicode.ExpectBOM).NewDecoder()))
|
||||
} else {
|
||||
scanner = bufio.NewScanner(z)
|
||||
}
|
||||
|
||||
scanner.Split(splitLines)
|
||||
|
||||
firstLine := true
|
||||
|
||||
for scanner.Scan() {
|
||||
line := strings.TrimSpace(scanner.Text())
|
||||
|
||||
if firstLine {
|
||||
line = strings.TrimPrefix(line, bom)
|
||||
firstLine = false
|
||||
if err := scanner.Err(); err != nil {
|
||||
return env, err
|
||||
}
|
||||
|
||||
line := strings.TrimSpace(scanner.Text())
|
||||
if line == "" || line[0] == '#' {
|
||||
continue
|
||||
}
|
||||
@ -263,7 +291,7 @@ func strictParse(r io.Reader, override bool) (Env, error) {
|
||||
}
|
||||
}
|
||||
|
||||
return env, nil
|
||||
return env, scanner.Err()
|
||||
}
|
||||
|
||||
var (
|
||||
|
Reference in New Issue
Block a user