Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ResolvedFilePath ¶
type ResolvedFilePath string
ResolvedFilePath represents a resolved file path and intended to prevent unintentional use of not verified file path. It is always either a URL or an absolute path.
func ResolveFilePath ¶
func ResolveFilePath(appPath, repoRoot, valueFile string, allowedURLSchemes []string) (resolvedPath ResolvedFilePath, isRemote bool, err error)
ResolveFilePath will inspect and resolve given file, and make sure that its final path is within the boundaries of the path specified in repoRoot.
appPath is the path we're operating in, e.g. where a Helm chart was unpacked to. repoRoot is the path to the root of the repository.
If either appPath or repoRoot is relative, it will be treated as relative to the current working directory.
valueFile is the path to a value file, relative to appPath. If valueFile is specified as an absolute path (i.e. leading slash), it will be treated as relative to the repoRoot. In case valueFile is a symlink in the extracted chart, it will be resolved recursively and the decision of whether it is in the boundary of repoRoot will be made using the final resolved path. valueFile can also be a remote URL with a protocol scheme as prefix, in which case the scheme must be included in the list of allowed schemes specified by allowedURLSchemes.
Will return an error if either valueFile is outside the boundaries of the repoRoot, valueFile is an URL with a forbidden protocol scheme or if valueFile is a recursive symlink nested too deep. May return errors for other reasons as well.
resolvedPath will hold the absolute, resolved path for valueFile on success or set to the empty string on failure.
isRemote will be set to true if valueFile is an URL using an allowed protocol scheme, or to false if it resolved to a local file.