Documentation ¶
Index ¶
- Constants
- Variables
- func AbsFile(workspace string, filename string) (string, error)
- func AbsolutePaths(workspace string, paths []string) []string
- func AllocatePort(isPortAvailable func(int32) bool, desiredPort int32) int32
- func CloneThroughJSON(old interface{}, new interface{})
- func CloneThroughYAML(old interface{}, new interface{})
- func ConvertFromV1Platform(platform v1.Platform) specs.Platform
- func ConvertToV1Platform(platform specs.Platform) v1.Platform
- func CreateMappedTar(ctx context.Context, w io.Writer, root string, pathMap map[string][]string) error
- func CreateTar(ctx context.Context, w io.Writer, root string, paths []string) error
- func CreateTarGz(ctx context.Context, w io.Writer, root string, paths []string) error
- func CreateTarWithParents(ctx context.Context, w io.Writer, root string, paths []string, uid, gid int, ...) error
- func Download(url string) ([]byte, error)
- func EnvMapToSlice(m map[string]string, separator string) []string
- func EnvPtrMapToSlice(m map[string]*string, separator string) []string
- func EnvSliceToMap(slice []string, separator string) map[string]string
- func EvaluateEnvTemplateMap(args map[string]*string) (map[string]*string, error)
- func EvaluateEnvTemplateMapWithEnv(args map[string]*string, env map[string]string) (map[string]*string, error)
- func ExecuteEnvTemplate(envTemplate *template.Template, customMap map[string]string) (string, error)
- func Expand(text, key, value string) string
- func ExpandEnvTemplate(s string, envMap map[string]string) (string, error)
- func ExpandEnvTemplateOrFail(s string, envMap map[string]string) (string, error)
- func ExpandHomePath(path string) string
- func ExpandPathsGlob(workingDir string, paths []string) ([]string, error)
- func GetAvailablePort(address string, port int, usedPorts *PortSet) int
- func IsDir(path string) bool
- func IsEmptyDir(path string) bool
- func IsFile(path string) bool
- func IsHiddenDir(filename string) bool
- func IsHiddenFile(filename string) bool
- func IsPortFree(address string, p int) bool
- func IsSubPath(basepath string, targetpath string) bool
- func IsURL(s string) bool
- func MapToFlag(m map[string]*string, flag string) ([]string, error)
- func NonEmptyLines(input []byte) []string
- func ParseEnvTemplate(t string) (*template.Template, error)
- func ParseEnvVariablesFromFile(fp string) (map[string]string, error)
- func ParseNamespaceFromFlags(flgs []string) string
- func Ptr[T any](t T) *T
- func RandomID() string
- func ReadConfiguration(filePath string) ([]byte, error)
- func ReadFile(filename string) ([]byte, error)
- func RealWorkDir() (string, error)
- func RegexEqual(expected, actual string) bool
- func RunCmd(ctx context.Context, cmd *exec.Cmd) error
- func RunCmdOut(ctx context.Context, cmd *exec.Cmd) ([]byte, error)
- func RunCmdOutOnce(ctx context.Context, cmd *exec.Cmd) ([]byte, error)
- func SanitizeHelmTemplateValue(s string) string
- func VerifyOrCreateFile(path string) error
- type Command
- type CommandWrapper
- type Commander
- type Gsutil
- type PortSet
- type StoreError
- type SyncStore
Constants ¶
const Any = ""
Network address which represent any address. This is the default that we should use when checking if port is free.
const GsutilExec = "gsutil"
const Loopback = "127.0.0.1"
Loopback network address. Skaffold should not bind to 0.0.0.0 unless we really want to expose something to the network.
Variables ¶
var Fs = afero.NewOsFs()
Fs is the underlying filesystem to use for reading skaffold project files & configuration. OS FS by default
var (
OSEnviron = os.Environ
)
For testing
var SkipWrapperCheck = false
Functions ¶
func AbsFile ¶
AbsFile resolves the absolute path of the file named filename in directory workspace, erroring if it is not a file
func AbsolutePaths ¶
AbsolutePaths prepends each path in paths with workspace if the path isn't absolute
func AllocatePort ¶
AllocatePort looks for a port close to desiredPort, using the provided implementation of isPortAvailable to determine what ports can be used. We deal with wrapping and avoid allocating ports < 1024 TODO(nkubala)09/14/21: plumb through context from callers
func CloneThroughJSON ¶
func CloneThroughJSON(old interface{}, new interface{})
CloneThroughJSON clones an `old` object into a `new` one using json marshalling and unmarshalling. Since the object can be marshalled, it's almost sure it can be unmarshalled. So we prefer to panic instead of returning an error that would create an untestable branch on the call site.
func CloneThroughYAML ¶
func CloneThroughYAML(old interface{}, new interface{})
CloneThroughYAML clones an `old` object into a `new` one using yaml marshalling and unmarshalling. Since the object can be marshalled, it's almost sure it can be unmarshalled. So we prefer to panic instead of returning an error that would create an untestable branch on the call site.
func CreateMappedTar ¶
func CreateTarGz ¶
func CreateTarWithParents ¶
func EnvMapToSlice ¶
EnvMapToSlice converts map of (string,string) to string slice
func EnvPtrMapToSlice ¶
EnvPtrMapToSlice converts map of (string,*string) to string slice
func EnvSliceToMap ¶
EnvSliceToMap converts a string slice into a map of (string,string) using the given separator
func EvaluateEnvTemplateMap ¶
EvaluateEnvTemplateMap parses and executes all map values as templates based on OS environment variables
func EvaluateEnvTemplateMapWithEnv ¶
func EvaluateEnvTemplateMapWithEnv(args map[string]*string, env map[string]string) (map[string]*string, error)
EvaluateEnvTemplateMapWithEnv parses and executes all map values as templates based on OS and custom environment variables
func ExecuteEnvTemplate ¶
func ExecuteEnvTemplate(envTemplate *template.Template, customMap map[string]string) (string, error)
ExecuteEnvTemplate executes an envTemplate based on OS environment variables and a custom map
func Expand ¶
Expand replaces placeholders for a given key with a given value. It supports the ${key} and the $key syntax.
func ExpandEnvTemplate ¶
ExpandEnvTemplate parses and executes template s with an optional environment map
func ExpandEnvTemplateOrFail ¶
ExpandEnvTemplateOrFail parses and executes template s with an optional environment map, and errors if a reference cannot be satisfied.
func ExpandHomePath ¶ added in v2.2.0
func ExpandPathsGlob ¶
ExpandPathsGlob expands paths according to filepath.Glob patterns Returns a list of unique files that match the glob patterns passed in.
func GetAvailablePort ¶
GetAvailablePort returns an available port that is near the requested port when possible. First, check if the provided port is available on the specified address and INADDR_ANY. If so, use it. If not, check if any of the next 10 subsequent ports are available. If not, check if any of ports 4503-4533 are available. If not, return a random port, which hopefully won't collide with any future containers
See https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt
func IsEmptyDir ¶
IsEmptyDir returns true for empty directories otherwise false
func IsHiddenDir ¶
IsHiddenDir returns if a directory is hidden.
func IsHiddenFile ¶
IsHiddenFile returns if a file is hidden. File is hidden if it starts with prefix "."
func IsPortFree ¶
func IsSubPath ¶
IsSubPath return true if targetpath is sub-path of basepath; doesn't check for symlinks
func MapToFlag ¶
MapToFlag parses all map values and returns them as `key=value` with the given flag Example: --my-flag key0=value0 --my-flag key1=value1 --my-flag key2=value2
func NonEmptyLines ¶
NonEmptyLines scans the provided input and returns the non-empty strings found as an array
func ParseEnvTemplate ¶
ParseEnvTemplate is a simple wrapper to parse an env template
func ParseEnvVariablesFromFile ¶ added in v2.4.0
func ParseNamespaceFromFlags ¶ added in v2.2.0
func ReadConfiguration ¶
ReadConfiguration reads a `skaffold.yaml` configuration and returns its content.
func RealWorkDir ¶
On macOS, $PWD can have a different case that the actual current working directory. That happens for example if one does: `cd /home/me/MY-PROJECT` before running Skaffold, instead of `cd /home/me/my-project`. In such a situation, the file watcher will fail to detect changes. To solve that, we force `os.Getwd()` not to use $PWD. See: https://github.com/rjeczalik/notify/issues/96
func RegexEqual ¶
RegexEqual matches the string 'actual' against a regex compiled from 'expected' If 'expected' is not a valid regex, string comparison is used as fallback
func RunCmdOutOnce ¶ added in v2.2.0
func VerifyOrCreateFile ¶
VerifyOrCreateFile checks if a file exists at the given path, and if not, creates all parent directories and creates the file.
Types ¶
type Command ¶
type Command interface { RunCmdOut(ctx context.Context, cmd *exec.Cmd) ([]byte, error) RunCmd(ctx context.Context, cmd *exec.Cmd) error RunCmdOutOnce(ctx context.Context, cmd *exec.Cmd) ([]byte, error) }
Command is an interface used to run commands. All packages should use this interface instead of calling exec.Cmd directly.
var DefaultExecCommand Command = newCommander()
DefaultExecCommand runs commands using exec.Cmd
type CommandWrapper ¶
type CommandWrapper struct { // Executable is the base name of the command, like `gradle` Executable string // Wrapper is the optional base name of a command wrapper, like `gradlew` Wrapper string }
CommandWrapper defines an association between an executable command (like `gradle`) and possible command wrappers (like `gradlew`). `CreateCommand` uses this definition to create a `Cmd` object. Maven and Gradle projects often provide a wrapper script to ensure a particular version of their builder is used.
func (CommandWrapper) CreateCommand ¶
func (cw CommandWrapper) CreateCommand(ctx context.Context, workingDir string, args []string) exec.Cmd
CreateCommand creates an `exec.Cmd` that is configured to call the executable (possibly using a wrapper in `workingDir`, when found) with the given arguments, with working directory set to `workingDir`.
type Commander ¶
type Commander struct {
// contains filtered or unexported fields
}
Commander is the exec.Cmd implementation of the Command interface
type StoreError ¶
type StoreError struct {
// contains filtered or unexported fields
}
StoreError represent any error that when retrieving errors from the store.
func (StoreError) Error ¶
func (e StoreError) Error() string
type SyncStore ¶
type SyncStore[T any] struct { // contains filtered or unexported fields }
SyncStore exports a single method `Exec` to ensure single execution of a function and share the result between all callers of the function.
func NewSyncStore ¶
NewSyncStore returns a new instance of `SyncStore`
func (*SyncStore[T]) Exec ¶
Exec executes the function f if and only if it's being called the first time for a specific key. If it's called multiple times for the same key only the first call will execute and store the result of f. All other calls will be blocked until the running instance of f returns and all of them receive the same result.