helpers

package
v0.32.6 Latest Latest
Warning

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

Go to latest
Published: Mar 21, 2024 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Overview

Package helpers provides generic helper functions with no external imports

Package helpers provides generic helper functions with no external imports

Package helpers provides generic helper functions with no external imports

Package helpers provides generic helper functions with no external imports

Package helpers provides generic helper functions with no external imports

Package helpers provides generic helper functions with no external imports

Package helpers provides generic helper functions with no external imports

Package helpers provides generic helper functions with no external imports

Package helpers provides generic helper functions with no external imports

Package helpers provides generic helper functions with no external imports

Package helpers provides generic utility functions.

Package helpers provides generic helper functions with no external imports

Index

Constants

View Source
const (
	// ReadUser is used for any internal file to be read only
	ReadUser = 0400
	// ReadWriteUser is used for any internal file not normally used by the end user or containing sensitive data
	ReadWriteUser = 0600
	// ReadAllWriteUser is used for any non sensitive file intended to be consumed by the end user
	ReadAllWriteUser = 0644
	// ReadWriteExecuteUser is used for any directory or executable not normally used by the end user or containing sensitive data
	ReadWriteExecuteUser = 0700
	// ReadExecuteAllWriteUser is used for any non sensitive directory or executable intended to be consumed by the end user
	ReadExecuteAllWriteUser = 0755
)
View Source
const (
	OCIURLPrefix = "oci://"

	SGETURLPrefix = "sget://"
	SGETURLScheme = "sget"

	IPV4Localhost = "127.0.0.1"
)

Nonstandard URL schemes or prefixes

Variables

This section is empty.

Functions

func BoolPtr added in v0.32.6

func BoolPtr(b bool) *bool

BoolPtr returns a pointer to a bool.

func CreateDirectory added in v0.32.6

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

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

func CreateFile added in v0.32.6

func CreateFile(filepath string) error

CreateFile creates an empty file at the given path.

func CreateParentDirectory added in v0.32.6

func CreateParentDirectory(destination string) error

CreateParentDirectory creates the parent directory for the given file path.

func CreatePathAndCopy added in v0.32.6

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 CreateReproducibleTarballFromDir added in v0.32.6

func CreateReproducibleTarballFromDir(dirPath, dirPrefix, tarballPath string) error

CreateReproducibleTarballFromDir creates a tarball from a directory with stripped headers

func DoHostnamesMatch added in v0.29.0

func DoHostnamesMatch(url1 string, url2 string) (bool, error)

DoHostnamesMatch returns a boolean indicating if the hostname of two different URLs are the same.

func ExtractBasePathFromURL added in v0.29.1

func ExtractBasePathFromURL(urlStr string) (string, error)

ExtractBasePathFromURL returns filename from URL string

func Filter

func Filter[T any](ss []T, test func(T) bool) (r []T)

Filter returns a new slice with only the elements that pass the test.

func Find

func Find[T any](ss []T, test func(T) bool) (r T)

Find returns the first element that passes the test.

func First30last30 added in v0.32.5

func First30last30(s string) string

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

func GetAvailablePort added in v0.30.0

func GetAvailablePort() (int, error)

GetAvailablePort retrieves an available port on the host machine. This delegates the port selection to the golang net library by starting a server and then checking the port that the server is using.

func GetCRCHash

func GetCRCHash(text string) uint32

GetCRCHash returns the computed CRC32 Sum of a given string

func GetCryptoHash

func GetCryptoHash(data io.ReadCloser, hashName crypto.Hash) (string, error)

GetCryptoHash returns the computed SHA256 Sum of a given file

func GetDirSize added in v0.32.6

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 GetSHA256Hash added in v0.29.0

func GetSHA256Hash(data io.ReadCloser) (string, error)

GetSHA256Hash returns the computed SHA256 Sum of a given file

func GetSHA256OfFile added in v0.32.6

func GetSHA256OfFile(filePath string) (string, error)

GetSHA256OfFile returns the SHA256 hash of the provided file.

func InvalidPath added in v0.32.6

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.32.6

func IsDir(path string) bool

IsDir returns true if the given path is a directory.

func IsHidden added in v0.32.6

func IsHidden(name string) bool

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

func IsNotZeroAndNotEqual added in v0.29.0

func IsNotZeroAndNotEqual[T any](given T, equal T) bool

IsNotZeroAndNotEqual is used to test if a struct has zero values or is equal values with another struct

func IsOCIURL added in v0.29.0

func IsOCIURL(source string) bool

IsOCIURL returns true if the given URL is an OCI URL.

func IsTextFile added in v0.32.6

func IsTextFile(path string) (bool, error)

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

func IsTrashBin added in v0.32.6

func IsTrashBin(dirPath string) bool

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

func IsURL added in v0.29.0

func IsURL(source string) bool

IsURL is a helper function to check if a URL is valid.

func IsValidHostName added in v0.30.0

func IsValidHostName() bool

IsValidHostName returns a boolean indicating if the hostname of the host machine is valid according to https://www.ietf.org/rfc/rfc1123.txt.

func ListDirectories added in v0.32.6

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

ListDirectories returns a list of directories in the given directory.

func MatchRegex

func MatchRegex(regex *regexp.Regexp, str string) (func(string) string, error)

MatchRegex wraps a get function around a substring match.

func MergeMap

func MergeMap[T any](m1, m2 map[string]T) (r map[string]T)

MergeMap merges map m2 with m1 overwriting common values with m2's values.

func MergeMapRecursive

func MergeMapRecursive(m1, m2 map[string]interface{}) (r map[string]interface{})

MergeMapRecursive recursively (nestedly) merges map m2 with m1 overwriting common values with m2's values.

func MergeNonZero added in v0.29.0

func MergeNonZero[T any](original T, overrides T) T

MergeNonZero is used to merge non-zero overrides from one struct into another of the same type

func MergeSlices added in v0.31.0

func MergeSlices[T any](s1, s2 []T, equals EqualFunc[T]) []T

MergeSlices merges two slices, s1 and s2, and returns a new slice containing all elements from s1 and only those elements from s2 that do not exist in s1 based on the provided equal function.

func RandomString added in v0.32.0

func RandomString(length int) (string, error)

RandomString generates a secure random string of the specified length.

func ReadFileByChunks added in v0.32.6

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

ReadFileByChunks reads a file into multiple chunks by the given size.

func RecursiveFileList added in v0.32.6

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 RemoveMatches

func RemoveMatches[T any](ss []T, test func(T) bool) (r []T)

RemoveMatches removes the given element from the slice that matches the test.

func Retry

func Retry(fn func() error, retries int, delay time.Duration, logger func(format string, args ...any)) error

Retry will retry a function until it succeeds or the timeout is reached. timeout == 2^attempt * delay.

func Reverse

func Reverse[T any](s []T) (r []T)

Reverse returns a new slice with the elements in reverse order.

func SHAsMatch added in v0.32.6

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 StringToSlice added in v0.30.0

func StringToSlice(s string) []string

StringToSlice converts a comma-separated string to a slice of lowercase strings.

func TransformAndMergeMap added in v0.29.0

func TransformAndMergeMap[T any](m1, m2 map[string]T, transform func(string) string) (r map[string]T)

TransformAndMergeMap transforms keys in both maps then merges map m2 with m1 overwriting common values with m2's values.

func TransformMapKeys

func TransformMapKeys[T any](m map[string]T, transform func(string) string) (r map[string]T)

TransformMapKeys takes a map and transforms its keys using the provided function.

func Truncate added in v0.32.6

func Truncate(text string, length int, invert bool) string

Truncate truncates provided text to the requested length

func Unique

func Unique[T comparable](s []T) (r []T)

Unique returns a new slice with only unique elements.

Types

type ConcurrencyTools added in v0.32.5

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.32.5

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.32.5

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

IsDone returns true if the context is done.

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

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.32.5

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 DiscardProgressWriter added in v0.32.5

type DiscardProgressWriter struct{}

DiscardProgressWriter is a ProgressWriter in which all calls succeed without doing anything Use this or nil or if you don't care about writing progress

func (DiscardProgressWriter) UpdateTitle added in v0.32.5

func (DiscardProgressWriter) UpdateTitle(_ string)

UpdateTitle doesn't do anything but satisfy implementation

func (DiscardProgressWriter) Write added in v0.32.5

func (DiscardProgressWriter) Write(p []byte) (int, error)

Write doesn't do anything but satisfy implementation

type EqualFunc added in v0.31.0

type EqualFunc[T any] func(a, b T) bool

EqualFunc defines a type for a function that determines equality between two elements of type T.

type ProgressWriter added in v0.32.5

type ProgressWriter interface {
	UpdateTitle(string)
	io.Writer
}

ProgressWriter wraps io.Writer, but also includes an updateTitle function to give the user additional context on what's going on. Useful in OCI for tracking layers

type Transport added in v0.32.5

type Transport struct {
	Base        http.RoundTripper
	ProgressBar ProgressWriter
}

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.32.5

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

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

func (*Transport) RoundTrip added in v0.32.5

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

Jump to

Keyboard shortcuts

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