util

package
v0.36.3 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2023 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const BASE_62_CHARS = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
View Source
const TerraformLockFile = ".terraform.lock.hcl"
View Source
const UNIQUE_ID_LENGTH = 6 // Should be good for 62^6 = 56+ billion combinations

Variables

View Source
var GlobalFallbackLogEntry *logrus.Entry

GlobalFallbackLogEntry is a global fallback logentry for the application Should be used in cases when more specific logger can't be created (like in the very beginning, when we have not yet parsed command line arguments).

This might go away once we migrate toproper cli library (see https://github.com/gruntwork-io/terragrunt/blob/master/cli/args.go#L29)

Functions

func CanonicalPath added in v0.6.0

func CanonicalPath(path string, basePath string) (string, error)

Return the canonical version of the given path, relative to the given base path. That is, if the given path is a relative path, assume it is relative to the given base path. A canonical path is an absolute path with all relative components (e.g. "../") fully resolved, which makes it safe to compare paths as strings.

func CanonicalPaths added in v0.6.0

func CanonicalPaths(paths []string, basePath string) ([]string, error)

Return the canonical version of the given paths, relative to the given base path. That is, if a given path is a relative path, assume it is relative to the given base path. A canonical path is an absolute path with all relative components (e.g. "../") fully resolved, which makes it safe to compare paths as strings.

func CleanPath added in v0.9.0

func CleanPath(path string) string

Use this function when cleaning paths to ensure the returned path uses / as the path separator to improve cross-platform compatibility

func CloneStringList added in v0.13.19

func CloneStringList(listToClone []string) []string

Make a copy of the given list of strings

func CloneStringMap added in v0.13.19

func CloneStringMap(mapToClone map[string]string) map[string]string

Make a copy of the given map of strings

func CommaSeparatedStrings added in v0.12.17

func CommaSeparatedStrings(list []string) string

CommaSeparatedStrings returns an HCL compliant formatted list of strings (each string within double quote)

func ContainsPath added in v0.23.24

func ContainsPath(path, subpath string) bool

ContainsPath returns true if path contains the given subpath E.g. path="foo/bar/bee", subpath="bar/bee" -> true E.g. path="foo/bar/bee", subpath="bar/be" -> false (becuase be is not a directory)

func CopyFile added in v0.9.4

func CopyFile(source string, destination string) error

Copy a file from source to destination

func CopyFolderContents added in v0.9.4

func CopyFolderContents(source, destination, manifestFile string, includeInCopy []string) error

Copy the files and folders within the source folder into the destination folder. Note that hidden files and folders (those starting with a dot) will be skipped. Will create a specified manifest file that contains paths of all copied files.

func CopyFolderContentsWithFilter added in v0.19.0

func CopyFolderContentsWithFilter(source, destination, manifestFile string, filter func(path string) bool) error

Copy the files and folders within the source folder into the destination folder. Pass each file and folder through the given filter function and only copy it if the filter returns true. Will create a specified manifest file that contains paths of all copied files.

func CreateLogEntry added in v0.28.0

func CreateLogEntry(prefix string, level logrus.Level) *logrus.Entry

CreateLogEntry creates a logger entry with the given prefix field

func CreateLogEntryWithWriter added in v0.28.0

func CreateLogEntryWithWriter(writer io.Writer, prefix string, level logrus.Level, hooks logrus.LevelHooks) *logrus.Entry

CreateLoggerWithWriter Create a logger around the given output stream and prefix

func CreateLogger added in v0.6.0

func CreateLogger(lvl logrus.Level) *logrus.Logger

CreateLogger creates a logger. If debug is set, we use ErrorLevel to enable verbose output, otherwise - only errors are shown

func DoWithRetry added in v0.19.0

func DoWithRetry(actionDescription string, maxRetries int, sleepBetweenRetries time.Duration, logger *logrus.Entry, logLevel logrus.Level, action func() error) error

DoWithRetry runs the specified action. If it returns a value, return that value. If it returns an error, sleep for sleepBetweenRetries and try again, up to a maximum of maxRetries retries. If maxRetries is exceeded, return a MaxRetriesExceeded error.

func EncodeBase64Sha1 added in v0.9.7

func EncodeBase64Sha1(str string) string

Returns the base 64 encoded sha1 hash of the given string

func EnsureDirectory added in v0.24.3

func EnsureDirectory(path string) error

EnsureDirectory creates a directory at this path if it does not exist, or error if the path exists and is a file.

func FileExists

func FileExists(path string) bool

Return true if the given file exists

func FileNotExists added in v0.21.6

func FileNotExists(path string) bool

Return true if the given file does not exist

func FileOrData added in v0.31.0

func FileOrData(maybePath string) (string, error)

FileOrData will read the contents of the data of the given arg if it is a file, and otherwise return the contents by itself. This will return an error if the given path is a directory.

func FirstArg added in v0.16.7

func FirstArg(args []string) string

A convenience method that returns the first item (0th index) in the given list or an empty string if this is an empty list

func GetDefaultLogLevel added in v0.31.11

func GetDefaultLogLevel() logrus.Level

GetDefaultLogLevel returns the default log level to use. The log level is resolved based on the environment variable with name from LogLevelEnvVar, falling back to info if unspecified or there is an error parsing the given log level.

func GetDiagnosticsWriter added in v0.19.14

func GetDiagnosticsWriter(logger *logrus.Entry, parser *hclparse.Parser) hcl.DiagnosticWriter

GetDiagnosticsWriter returns a hcl2 parsing diagnostics emitter for the current terminal.

func GetPathRelativeTo added in v0.4.0

func GetPathRelativeTo(path string, basePath string) (string, error)

Return the relative path you would have to take to get from basePath to path

func GetRandomTime added in v0.6.4

func GetRandomTime(lowerBound, upperBound time.Duration) time.Duration

Get a random time duration between the lower bound and upper bound. This is useful because some of our automated tests wound up flooding the AWS API all at once, leading to a "Subscriber limit exceeded" error. TODO: Some of the more exotic test cases fail, but it's not worth catching them given the intended use of this function.

func Grep

func Grep(regex *regexp.Regexp, glob string) (bool, error)

Returns true if the given regex can be found in any of the files matched by the given glob

func HasPathPrefix added in v0.23.24

func HasPathPrefix(path, prefix string) bool

HasPathPrefix returns true if path starts with the given path prefix E.g. path="/foo/bar/biz", prefix="/foo/bar" -> true E.g. path="/foo/bar/biz", prefix="/foo/ba" -> false (because ba is not a directory path)

func IsDir added in v0.13.5

func IsDir(path string) bool

Return true if the path points to a directory

func IsFile added in v0.16.13

func IsFile(path string) bool

Return true if the path points to a file

func IsSymLink(path string) bool

IsSymLink returns true if the given file is a symbolic link Per https://stackoverflow.com/a/18062079/2308858

func JoinPath added in v0.9.0

func JoinPath(elem ...string) string

Windows systems use \ as the path separator *nix uses / Use this function when joining paths to force the returned path to use / as the path separator This will improve cross-platform compatibility

func JoinTerraformModulePath added in v0.13.13

func JoinTerraformModulePath(modulesFolder string, path string) string

Join two paths together with a double-slash between them, as this is what Terraform uses to identify where a "repo" ends and a path within the repo begins. Note: The Terraform docs only mention two forward-slashes, so it's not clear if on Windows those should be two back-slashes? https://www.terraform.io/docs/modules/sources.html

func KeyValuePairStringListToMap added in v0.29.5

func KeyValuePairStringListToMap(asList []string) (map[string]string, error)

KeyValuePairListToMap converts a list of key value pair encoded as `key=value` strings into a map.

func KindOf added in v0.12.9

func KindOf(value interface{}) reflect.Kind

Return the kind of the type or Invalid if value is nil

func LastArg added in v0.16.14

func LastArg(args []string) string

A convenience method that returns the last item in the given list or an empty string if this is an empty list

func ListContainsElement added in v0.6.0

func ListContainsElement(list []string, element string) bool

Return true if the given list contains the given element

func ListContainsSublist added in v0.23.24

func ListContainsSublist(list, sublist []string) bool

ListContainsSublist returns true if an instance of the sublist can be found in the given list

func ListEquals added in v0.23.24

func ListEquals(a, b []string) bool

ListEquals returns true if the two lists are equal

func ListHasPrefix added in v0.23.24

func ListHasPrefix(list, prefix []string) bool

ListHasPrefix returns true if list starts with the given prefix list

func MatchesAny added in v0.17.0

func MatchesAny(regExps []string, s string) bool

func Min added in v0.14.1

func Min(x, y int) int

func MustWalkTerraformOutput added in v0.36.2

func MustWalkTerraformOutput(value interface{}, path ...string) interface{}

MustWalkTerraformOutput is a helper utility to deeply return a value from a terraform output.

nil will be returned if the path is invalid

Using an example terraform output:
  a = {
    b = {
      c = "foo"
    }
    "d" = [
      1,
      2
    ]
  }

path ["a", "b", "c"] will return "foo"
path ["a", "d", "1"] will return 2
path ["a", "foo"] will return nil

func ReadFileAsString added in v0.4.0

func ReadFileAsString(path string) (string, error)

Return the contents of the file at the given path as a string

func RemoveDuplicatesFromList added in v0.12.11

func RemoveDuplicatesFromList(list []string) []string

Returns a copy of the given list with all duplicates removed (keeping the first encountereds)

func RemoveDuplicatesFromListKeepLast added in v0.12.11

func RemoveDuplicatesFromListKeepLast(list []string) []string

Returns a copy of the given list with all duplicates removed (keeping the last encountereds)

func RemoveElementFromList added in v0.6.0

func RemoveElementFromList(list []string, element string) []string

Return a copy of the given list with all instances of the given element removed

func SecondArg added in v0.16.7

func SecondArg(args []string) string

A convenience method that returns the second item (1st index) in the given list or an empty string if this is a list that has less than 2 items in it

func SplitPath added in v0.23.24

func SplitPath(path string) []string

SplitPath splits the given path into a list. E.g. "foo/bar/boo.txt" -> ["foo", "bar", "boo.txt"] E.g. "/foo/bar/boo.txt" -> ["", "foo", "bar", "boo.txt"] Notice that if path is absolute the resulting list will begin with an empty string.

func StringListInsert added in v0.28.4

func StringListInsert(list []string, element string, index int) []string

StringListInsert will insert the given string in to the provided string list at the specified index and return the new list of strings. To insert the element, we append the item to the tail of the string and then prepend the existing items.

func TerragruntExcludes added in v0.27.0

func TerragruntExcludes(path string) bool

func UniqueId added in v0.19.0

func UniqueId() string

Returns a unique (ish) id we can use to name resources so they don't conflict with each other. Uses base 62 to generate a 6 character string that's unlikely to collide with the handful of tests we run in parallel. Based on code here: http://stackoverflow.com/a/9543797/483528

func WriteFileWithSamePermissions added in v0.9.4

func WriteFileWithSamePermissions(source string, destination string, contents []byte) error

Write a file to the given destination with the given contents using the same permissions as the file at source

Types

type InvalidKeyValue added in v0.29.5

type InvalidKeyValue string

func (InvalidKeyValue) Error added in v0.29.5

func (err InvalidKeyValue) Error() string

type LogWriter added in v0.35.5

type LogWriter struct {
	Logger *logrus.Entry
	Level  logrus.Level
}

LogWriter - Writer implementation which redirect Write requests to configured logger and level

func (*LogWriter) Write added in v0.35.5

func (w *LogWriter) Write(p []byte) (n int, err error)

type MaxRetriesExceeded added in v0.19.0

type MaxRetriesExceeded struct {
	Description string
	MaxRetries  int
}

MaxRetriesExceeded is an error that occurs when the maximum amount of retries is exceeded.

func (MaxRetriesExceeded) Error added in v0.19.0

func (err MaxRetriesExceeded) Error() string

type PathIsNotDirectory added in v0.24.3

type PathIsNotDirectory struct {
	// contains filtered or unexported fields
}

PathIsNotDirectory is returned when the given path is unexpectedly not a directory.

func (PathIsNotDirectory) Error added in v0.24.3

func (err PathIsNotDirectory) Error() string

type PathIsNotFile added in v0.31.0

type PathIsNotFile struct {
	// contains filtered or unexported fields
}

PathIsNotFile is returned when the given path is unexpectedly not a file.

func (PathIsNotFile) Error added in v0.31.0

func (err PathIsNotFile) Error() string

Jump to

Keyboard shortcuts

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