forked from toolshed/abra
		
	chore: deps and vendor
This commit is contained in:
		
							
								
								
									
										4
									
								
								vendor/github.com/docker/cli/opts/envfile.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/docker/cli/opts/envfile.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -2,6 +2,8 @@ package opts
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"os"
 | 
			
		||||
 | 
			
		||||
	"github.com/docker/cli/pkg/kvfile"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ParseEnvFile reads a file with environment variables enumerated by lines
 | 
			
		||||
@ -18,5 +20,5 @@ import (
 | 
			
		||||
// environment variables, that's why we just strip leading whitespace and
 | 
			
		||||
// nothing more.
 | 
			
		||||
func ParseEnvFile(filename string) ([]string, error) {
 | 
			
		||||
	return parseKeyValueFile(filename, os.LookupEnv)
 | 
			
		||||
	return kvfile.Parse(filename, os.LookupEnv)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										76
									
								
								vendor/github.com/docker/cli/opts/file.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										76
									
								
								vendor/github.com/docker/cli/opts/file.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -1,76 +0,0 @@
 | 
			
		||||
package opts
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"unicode"
 | 
			
		||||
	"unicode/utf8"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const whiteSpaces = " \t"
 | 
			
		||||
 | 
			
		||||
// ErrBadKey typed error for bad environment variable
 | 
			
		||||
type ErrBadKey struct {
 | 
			
		||||
	msg string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (e ErrBadKey) Error() string {
 | 
			
		||||
	return "poorly formatted environment: " + e.msg
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func parseKeyValueFile(filename string, emptyFn func(string) (string, bool)) ([]string, error) {
 | 
			
		||||
	fh, err := os.Open(filename)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return []string{}, err
 | 
			
		||||
	}
 | 
			
		||||
	defer fh.Close()
 | 
			
		||||
 | 
			
		||||
	lines := []string{}
 | 
			
		||||
	scanner := bufio.NewScanner(fh)
 | 
			
		||||
	currentLine := 0
 | 
			
		||||
	utf8bom := []byte{0xEF, 0xBB, 0xBF}
 | 
			
		||||
	for scanner.Scan() {
 | 
			
		||||
		scannedBytes := scanner.Bytes()
 | 
			
		||||
		if !utf8.Valid(scannedBytes) {
 | 
			
		||||
			return []string{}, fmt.Errorf("env file %s contains invalid utf8 bytes at line %d: %v", filename, currentLine+1, scannedBytes)
 | 
			
		||||
		}
 | 
			
		||||
		// We trim UTF8 BOM
 | 
			
		||||
		if currentLine == 0 {
 | 
			
		||||
			scannedBytes = bytes.TrimPrefix(scannedBytes, utf8bom)
 | 
			
		||||
		}
 | 
			
		||||
		// trim the line from all leading whitespace first
 | 
			
		||||
		line := strings.TrimLeftFunc(string(scannedBytes), unicode.IsSpace)
 | 
			
		||||
		currentLine++
 | 
			
		||||
		// line is not empty, and not starting with '#'
 | 
			
		||||
		if len(line) > 0 && !strings.HasPrefix(line, "#") {
 | 
			
		||||
			variable, value, hasValue := strings.Cut(line, "=")
 | 
			
		||||
 | 
			
		||||
			// trim the front of a variable, but nothing else
 | 
			
		||||
			variable = strings.TrimLeft(variable, whiteSpaces)
 | 
			
		||||
			if strings.ContainsAny(variable, whiteSpaces) {
 | 
			
		||||
				return []string{}, ErrBadKey{fmt.Sprintf("variable '%s' contains whitespaces", variable)}
 | 
			
		||||
			}
 | 
			
		||||
			if len(variable) == 0 {
 | 
			
		||||
				return []string{}, ErrBadKey{fmt.Sprintf("no variable name on line '%s'", line)}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if hasValue {
 | 
			
		||||
				// pass the value through, no trimming
 | 
			
		||||
				lines = append(lines, variable+"="+value)
 | 
			
		||||
			} else {
 | 
			
		||||
				var present bool
 | 
			
		||||
				if emptyFn != nil {
 | 
			
		||||
					value, present = emptyFn(line)
 | 
			
		||||
				}
 | 
			
		||||
				if present {
 | 
			
		||||
					// if only a pass-through variable is given, clean it up.
 | 
			
		||||
					lines = append(lines, strings.TrimSpace(variable)+"="+value)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return lines, scanner.Err()
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/github.com/docker/cli/opts/opts.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/docker/cli/opts/opts.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -266,6 +266,8 @@ func validateDomain(val string) (string, error) {
 | 
			
		||||
	return "", fmt.Errorf("%s is not a valid domain", val)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const whiteSpaces = " \t"
 | 
			
		||||
 | 
			
		||||
// ValidateLabel validates that the specified string is a valid label, and returns it.
 | 
			
		||||
//
 | 
			
		||||
// Labels are in the form of key=value; key must be a non-empty string, and not
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										3
									
								
								vendor/github.com/docker/cli/opts/parse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/docker/cli/opts/parse.go
									
									
									
										generated
									
									
										vendored
									
									
								
							@ -6,6 +6,7 @@ import (
 | 
			
		||||
	"strconv"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"github.com/docker/cli/pkg/kvfile"
 | 
			
		||||
	"github.com/docker/docker/api/types/container"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@ -25,7 +26,7 @@ func ReadKVEnvStrings(files []string, override []string) ([]string, error) {
 | 
			
		||||
func readKVStrings(files []string, override []string, emptyFn func(string) (string, bool)) ([]string, error) {
 | 
			
		||||
	var variables []string
 | 
			
		||||
	for _, ef := range files {
 | 
			
		||||
		parsedVars, err := parseKeyValueFile(ef, emptyFn)
 | 
			
		||||
		parsedVars, err := kvfile.Parse(ef, emptyFn)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user