utils

package
v0.30.0-rc2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 3, 2023 License: Apache-2.0 Imports: 59 Imported by: 0

Documentation

Overview

Package utils provides generic utility functions.

Package utils provides generic utility functions.

Package utils provides generic helper functions.

Package utils provides generic utility functions.

Package utils provides generic utility functions.

Package utils provides generic helper functions.

Package utils provides generic utility functions.

Package utils provides generic helper functions.

Package utils provides generic utility functions.

Package utils provides generic utility functions.

Package utils provides generic utility functions.

Package utils provides generic utility functions.

Package utils provides generic helper functions.

Package utils provides generic utility functions.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AddImageNameAnnotation added in v0.28.3

func AddImageNameAnnotation(ociPath string, referenceToDigest map[string]string) error

AddImageNameAnnotation adds an annotation to the index.json file so that the deploying code can figure out what the image reference <-> digest shasum will be.

func AddRootHint added in v0.28.0

func AddRootHint(hints map[string]string, rootKey string, hintText string) map[string]string

AddRootHint adds a hint string for a given root key.

func AddRootListHint added in v0.28.0

func AddRootListHint(hints map[string]string, listKey string, listValue string, hintText string) map[string]string

AddRootListHint adds a hint string for a given root list key and value.

func ByteFormat

func ByteFormat(inputNum float64, precision int) string

ByteFormat formats a number of bytes into a human readable string.

func ColorPrintYAML

func ColorPrintYAML(data any, hints map[string]string, spaceRootLists bool)

ColorPrintYAML pretty prints a yaml file to the console.

func CosignSignBlob added in v0.25.1

func CosignSignBlob(blobPath string, outputSigPath string, keyPath string, passwordFunc func(bool) ([]byte, error)) ([]byte, error)

CosignSignBlob signs the provide binary and returns the signature

func CosignVerifyBlob added in v0.25.1

func CosignVerifyBlob(blobRef string, sigRef string, keyPath string) error

CosignVerifyBlob verifies the zarf.yaml.sig was signed with the key provided by the flag

func CreateDirectory

func CreateDirectory(path string, mode os.FileMode) error

CreateDirectory creates a directory for the given path and file mode.

func CreateFile added in v0.28.1

func CreateFile(filepath string) error

CreateFile creates an empty file at the given path.

func CreateFilePath

func CreateFilePath(destination string) error

CreateFilePath creates the parent directory for the given file path.

func CreatePathAndCopy

func CreatePathAndCopy(source string, destination string) error

CreatePathAndCopy creates the parent directory for the given file path and copies the source file to the destination.

func DownloadToFile

func DownloadToFile(src string, dst string, cosignKeyPath string) (err error)

DownloadToFile downloads a given URL to the target filepath (including the cosign key if necessary).

func ExecuteWait added in v0.28.2

func ExecuteWait(waitTimeout, waitNamespace, condition, kind, identifier string, timeout time.Duration)

ExecuteWait executes the wait-for command.

func Fetch

func Fetch(url string) io.ReadCloser

Fetch fetches the response body from a given URL.

func FindYamlTemplates

func FindYamlTemplates(config any, prefix string, suffix string) (map[string]string, error)

FindYamlTemplates finds strings with a given prefix in a config.

func First30last30 added in v0.25.0

func First30last30(s string) string

First30last30 returns the source string that has been trimmed to 30 characters at the beginning and end.

func GetDirSize added in v0.25.0

func GetDirSize(path string) (int64, error)

GetDirSize walks through all files and directories in the provided path and returns the total size in bytes.

func GetFinalExecutablePath

func GetFinalExecutablePath() (string, error)

GetFinalExecutablePath returns the absolute path to the Zarf executable, following any symlinks along the way.

func GetHtpasswdString

func GetHtpasswdString(username string, password string) (string, error)

GetHtpasswdString converts a username and password to a properly formatted and hashed format for `htpasswd`.

func GetSHA256OfFile added in v0.25.1

func GetSHA256OfFile(filePath string) (string, error)

GetSHA256OfFile returns the SHA256 hash of the provided file.

func InvalidPath

func InvalidPath(path string) bool

InvalidPath checks if the given path is valid (if it is a permissions error it is there we just don't have access)

func IsDir added in v0.27.0

func IsDir(path string) bool

IsDir returns true if the given path is a directory.

func IsHidden added in v0.28.0

func IsHidden(name string) bool

IsHidden returns true if the given file name starts with a dot.

func IsTextFile added in v0.23.3

func IsTextFile(path string) (bool, error)

IsTextFile returns true if the given file is a text file.

func IsTrashBin added in v0.28.0

func IsTrashBin(dirPath string) bool

IsTrashBin checks if the given directory path corresponds to an operating system's trash bin.

func ListDirectories

func ListDirectories(directory string) ([]string, error)

ListDirectories returns a list of directories in the given directory.

func LoadOCIImage added in v0.26.0

func LoadOCIImage(imgPath string, refInfo transform.Image) (v1.Image, error)

LoadOCIImage returns a v1.Image with the image ref specified from a location provided, or an error if the image cannot be found.

func MakeTempDir

func MakeTempDir(basePath string) (string, error)

MakeTempDir creates a temp directory with the zarf- prefix.

func RandomString

func RandomString(length int) string

RandomString generates a secure random string of the specified length.

func ReadYaml

func ReadYaml(path string, destConfig any) error

ReadYaml reads a yaml file and unmarshals it into a given config.

func RecursiveFileList

func RecursiveFileList(dir string, pattern *regexp.Regexp, skipHidden bool) (files []string, err error)

RecursiveFileList walks a path with an optional regex pattern and returns a slice of file paths. If skipHidden is true, hidden directories will be skipped.

func ReloadYamlTemplate

func ReloadYamlTemplate(config any, mappings map[string]string) error

ReloadYamlTemplate marshals a given config, replaces strings and unmarshals it back.

func RenderProgressBarForLocalDirWrite added in v0.25.0

func RenderProgressBarForLocalDirWrite(filepath string, expectedTotal int64, wg *sync.WaitGroup, completeChan chan int, updateText string, successText string)

RenderProgressBarForLocalDirWrite creates a progress bar that continuously tracks the progress of writing files to a local directory and all of its subdirectories. NOTE: This function runs infinitely until the completeChan is triggered, this function should be run in a goroutine while a different thread/process is writing to the directory.

func ReplaceTextTemplate

func ReplaceTextTemplate(path string, mappings map[string]*TextTemplate, deprecations map[string]string, templateRegex string) error

ReplaceTextTemplate loads a file from a given path, replaces text in it and writes it back in place.

func RoundUp

func RoundUp(input float64, places int) (newVal float64)

RoundUp rounds a float64 to the given number of decimal places.

func SHAsMatch added in v0.29.0

func SHAsMatch(path, expected string) error

SHAsMatch returns an error if the SHA256 hash of the provided file does not match the expected hash.

func Sget

func Sget(ctx context.Context, image, key string, out io.Writer) error

Sget performs a cosign signature verification on a given image using the specified public key.

func SortDependencies added in v0.25.0

func SortDependencies(data []Dependency) ([]string, error)

SortDependencies performs a topological sort on a dependency graph and returns a slice of the nodes in order of their precedence. The input data is a map of nodes to a slice of its dependencies.

E.g: A depends on B & C, B depends on C and C has no dependencies: {"A": ["B", "C"], "B": ["C"], "C": []string{}}

Note sort order is dependent on the slice order of the input data for nodes with the same in-degree (i.e. the same number of dependencies).

func SplitFile

func SplitFile(path string, chunkSizeBytes int) (chunks [][]byte, sha256sum string, err error)

SplitFile splits a file into multiple parts by the given size.

func SplitYAML

func SplitYAML(yamlData []byte) ([]*unstructured.Unstructured, error)

SplitYAML splits a YAML file into unstructured objects. Returns list of all unstructured objects found in the yaml. If an error occurs, returns objects that have been parsed so far too. Source: https://github.com/argoproj/gitops-engine/blob/v0.5.2/pkg/utils/kube/kube.go#L286.

func SplitYAMLToString added in v0.25.0

func SplitYAMLToString(yamlData []byte) ([]string, error)

SplitYAMLToString splits a YAML file into strings. Returns list of yamls found in the yaml. If an error occurs, returns objects that have been parsed so far too. Source: https://github.com/argoproj/gitops-engine/blob/v0.5.2/pkg/utils/kube/kube.go#L304.

func VerifyBinary

func VerifyBinary(binary string) bool

VerifyBinary returns true if binary is available.

func WriteFile

func WriteFile(path string, data []byte) error

WriteFile writes the given data to the given path.

func WriteJSON added in v0.25.0

func WriteJSON(path string, v any) error

WriteJSON writes a given json struct to a json file on disk.

func WriteYaml

func WriteYaml(path string, srcConfig any, perm fs.FileMode) error

WriteYaml writes a given config to a yaml file on disk.

Types

type ConcurrencyTools added in v0.30.0

type ConcurrencyTools[P any, E any] struct {
	ProgressChan chan P
	ErrorChan    chan E

	Cancel context.CancelFunc
	// contains filtered or unexported fields
}

ConcurrencyTools is a struct that contains channels and a context for use in concurrent routines

func NewConcurrencyTools added in v0.30.0

func NewConcurrencyTools[P any, E any](length int) *ConcurrencyTools[P, E]

NewConcurrencyTools creates a new ConcurrencyTools struct

Length is the number of iterations that will be performed concurrently

func (*ConcurrencyTools[P, E]) IsDone added in v0.30.0

func (ct *ConcurrencyTools[P, E]) IsDone() bool

IsDone returns true if the context is done.

func (*ConcurrencyTools[P, E]) WaitGroupDone added in v0.30.0

func (ct *ConcurrencyTools[P, E]) WaitGroupDone()

WaitGroupDone decrements the internal WaitGroup counter by one.

func (*ConcurrencyTools[P, E]) WaitWithProgress added in v0.30.0

func (ct *ConcurrencyTools[P, E]) WaitWithProgress(onProgress func(P, int), onError func(E) error) error

WaitWithProgress waits for all routines to finish

onProgress is a callback function that is called when a routine sends a progress update

onError is a callback function that is called when a routine sends an error

func (*ConcurrencyTools[P, E]) WaitWithoutProgress added in v0.30.0

func (ct *ConcurrencyTools[P, E]) WaitWithoutProgress(onError func(E) error) error

WaitWithoutProgress waits for all routines to finish without a progress callback

onError is a callback function that is called when a routine sends an error

type Credential

type Credential struct {
	Path string
	Auth http.BasicAuth
}

Credential represents authentication for a given host.

func FindAuthForHost

func FindAuthForHost(baseURL string) *Credential

FindAuthForHost finds the authentication scheme for a given host using .git-credentials then .netrc.

type Dependency added in v0.25.0

type Dependency interface {
	Name() string
	Dependencies() []string
}

Dependency is an interface that represents a node in a list of dependencies.

type TextTemplate added in v0.25.1

type TextTemplate struct {
	Sensitive  bool
	AutoIndent bool
	Type       types.VariableType
	Value      string
}

TextTemplate represents a value to be templated into a text file.

type Transport added in v0.25.0

type Transport struct {
	Base        http.RoundTripper
	ProgressBar *message.ProgressBar
}

Transport is an http.RoundTripper that keeps track of the in-flight request and add hooks to report upload progress.

func NewTransport added in v0.25.0

func NewTransport(base http.RoundTripper, bar *message.ProgressBar) *Transport

NewTransport returns a custom transport that tracks an http.RoundTripper and a message.ProgressBar.

func (*Transport) RoundTrip added in v0.25.0

func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error)

RoundTrip is mirrored from retry, but instead of calling retry's private t.roundTrip(), this uses our own which has interactions w/ message.ProgressBar

https://github.com/oras-project/oras-go/blob/main/registry/remote/retry/client.go

Directories

Path Synopsis
Package exec provides a wrapper around the os/exec package
Package exec provides a wrapper around the os/exec package
Package helpers provides generic helper functions with no external imports
Package helpers provides generic helper functions with no external imports

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL