utils

package
v2.0.1-rc.2 Latest Latest
Warning

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

Go to latest
Published: Feb 6, 2025 License: AGPL-3.0 Imports: 43 Imported by: 11

Documentation

Index

Constants

View Source
const RFC3339WithMS = "2006-01-02T15:04:05.000Z07:00"

Variables

View Source
var Timing []timeLog

Functions

func AreFilesEqual

func AreFilesEqual(file1, file2 string) (bool, error)

func Base36Hash

func Base36Hash(input string, length int) (string, error)

func BoolPtrEqual

func BoolPtrEqual(a, b *bool) bool

func BuildRequestPayload

func BuildRequestPayload(signature string, payload map[string]interface{}) *bytes.Buffer

BuildRequestPayload merges the provided payload with the standard payload that needs to be sent

func CapitalizeFirst

func CapitalizeFirst(s string) string

func CommandFullKey

func CommandFullKey(cmd *cobra.Command) string

func ContainsUpper

func ContainsUpper(s string) bool

ContainsUpper returns true if the string contains any uppercase characters

func CopyDir

func CopyDir(src string, dst string) error

func CopyFile

func CopyFile(src, dst string) error

func Deref

func Deref[T any](p *T, defaultVal T) T

Deref safely dereferences a pointer, returning a default value if the pointer is nil

func DisplayProfileData

func DisplayProfileData(op io.Writer)

func DisplayProfileDataJsonl

func DisplayProfileDataJsonl(op io.Writer)

func DistributedStringIndex

func DistributedStringIndex(message string, secret string, numberRange int64) (int64, error)

func EmptyDir

func EmptyDir(dirPath string) error

func EnsureDirectoryPermission

func EnsureDirectoryPermission(directoryPath string) error

func FileModTime

func FileModTime(filePath string) (time.Time, error)

func FilenameNoExtension

func FilenameNoExtension(fileName string) string

func Filter

func Filter[V any](elements []V, predicate func(V) bool) []V

Filter returns a new slice only containing the elements for which invoking the predicate returned true

The predicate is invoked with each element

func FindProcess

func FindProcess(targetPid int) (*psutils.Process, error)

FindProcess tries to find the process with the given pid returns nil if the process could not be found

func FormatTime

func FormatTime(localTime time.Time) string

FormatTime formats time as RFC3339 in UTC

func GetFirstListenAddress

func GetFirstListenAddress(listenAddresses []string) string

func GetGenericTypeName

func GetGenericTypeName[T any]() string

GetGenericTypeName returns lower case form of type unqualified name

func GetNextFreePort

func GetNextFreePort() (int, error)

func GetPluginName

func GetPluginName(plugin string) string

GetPluginName function is used to get the plugin name required while installing/updating/removing a plugin. External plugins require the repo names to be prefixed(eg: francois2metz/scalingo). Sample input 1: hub.steampipe.io/plugins/francois2metz/scalingo@latest Sample output 1: francois2metz/scalingo Sample input 2: hub.steampipe.io/plugins/turbot/aws@latest Sample output 2: aws

func HumanizeDuration

func HumanizeDuration(duration time.Duration) string

func HumanizeNumber

func HumanizeNumber(count int) string

func InstanceOf

func InstanceOf[T any]() T

func IsInterface

func IsInterface[T any](val T) bool

func IsMacM1

func IsMacM1() (bool, error)

IsMacM1 returns whether the system is a Mac M1 machine

func IsPointer

func IsPointer[T any](val T) bool

func IsPortBindable

func IsPortBindable(host string, port int) error

func IsValidDir

func IsValidDir(path string) bool

func IsWSL

func IsWSL() bool

IsWSL detects whether app is running in WSL environment refer to: https://github.com/Microsoft/WSL/issues/423#issuecomment-679190758

func JsonCloneToMap

func JsonCloneToMap(val any) (map[string]any, error)

JsonCloneToMap tries to JSON marshal and unmarshal the given data, returning a map[string]any if successful

func ListenAddressesContainsOneOfAddresses

func ListenAddressesContainsOneOfAddresses(listenAddresses []string, addresses []string) bool

func LocalLoopbackAddresses

func LocalLoopbackAddresses() ([]string, error)

func LocalPublicAddresses

func LocalPublicAddresses() ([]string, error)

func LogTime

func LogTime(operation string)

func Map

func Map[V any, M any](elements []V, mapper func(V) M) []M

Map returns a new slice where every value is mapped to a new value through the mapper

The mapper is invoked with each element

func MapRange

func MapRange(value int, valueRange RangeConstraint, desiredRange RangeConstraint) int

MapRange Re-maps a number from one range to another.

func MergeMaps

func MergeMaps[M ~map[K]V, K comparable, V any](old, new M) M

TODO no longer needed - included on go maps MergeMaps merges 'new' onto 'old'. Values existing in old already have precedence Any value existing in new but not old is added to old

func MoveFile

func MoveFile(source string, destination string) error

MoveFile moves a file from source to destination.

It first attempts the movement using OS primitives (os.Rename)
If os.Rename fails, it copies the file byte-by-byte to the destination and then removes the source

func Partition

func Partition[V any](elements []V, predicate func(V) bool) ([]V, []V)

Partition splits the array of elements into two groups: the left partition contains elements that the predicate returns `true` for. the right partition contains elements that the predicate returns `false` for.

The predicate is invoked with each element

func PidExists

func PidExists(targetPid int) bool

PidExists uses psutils.NewProcess, instead of signalling, since we have observed that signalling does not always work reliably when the destination of the signal is a child of the source of the signal - which may be the case then starting implicit services

func PluginFQNToSchemaName

func PluginFQNToSchemaName(pluginFQN string) string

PluginFQNToSchemaName convert a full plugin name to a schema name schemas in postgres are limited to 63 chars - the name may be longer than this, in which case trim the length and add a hash to the end to make unique

func Pluralize

func Pluralize(base string, count int) string

Pluralize :: pluralizes a word (if applicable) based on provided count

func PrettifyJsonFromReader

func PrettifyJsonFromReader(dataToExport io.Reader) (io.Reader, error)

func PtrEqual

func PtrEqual[T constraints.Ordered](a, b *T) bool

func RemoveDirectoryContents

func RemoveDirectoryContents(removePath string) error

func RemoveElementFromSlice

func RemoveElementFromSlice(slice []string, s int) []string

RemoveElementFromSlice takes a slice of strings and an index to remove, and returns a new slice with the specified element removed.

func SafeBoolEqual

func SafeBoolEqual(b1, b2 *bool) bool

func SafeIntEqual

func SafeIntEqual(i1, i2 *int) bool

func SafeStringsEqual

func SafeStringsEqual(s1, s2 interface{}) bool

func SendRequest

func SendRequest(ctx context.Context, signature string, method string, sendRequestTo url.URL, payload io.Reader) (*http.Response, error)

SendRequest makes a http call to the given URL

func SlicePtrEqual

func SlicePtrEqual[T constraints.Ordered](a, b *[]T) bool

func SliceToLookup

func SliceToLookup[K comparable](src []K) map[K]struct{}

func SortedMapKeys

func SortedMapKeys[V any](m map[string]V) []string

func TimeNow

func TimeNow() *time.Time

TimeNowPtr returns a pointer to the current time in UTC.

func TimePtr

func TimePtr(t time.Time) *time.Time

TimePtr returns a pointer to the time.Time value passed in.

func ToIntegerPointer

func ToIntegerPointer(i int) *int

ToIntegerPointer converts an integer into its pointer

func ToPointer

func ToPointer[T any](value T) *T

func ToStringPointer

func ToStringPointer(s string) *string

ToStringPointer converts a string into its pointer

func ToTitleCase

func ToTitleCase(s string) string

ToTitleCase correctly returns a Title cased string

func TrimGitUrls

func TrimGitUrls(urls []string) []string

TrimGitUrls Modifies(trims) the URL if contains http ot https in arguments

func TrimSchemaName

func TrimSchemaName(pluginFQN string) string

func UnderlyingArch

func UnderlyingArch() (string, error)

UnderlyingArch detects the underlying architecture(amd64/arm64) of the system we need this to detect the underlying architecture to install the correct FDW package

func UnquoteStringArray

func UnquoteStringArray(stringArray []string) []string

UnquoteStringArray removes quote marks from elements of string array

func UserConfirmation

func UserConfirmation(message string) bool

UserConfirmation displays the warning message and asks the user for input regarding whether to continue or not

func UserConfirmationWithDefault

func UserConfirmationWithDefault(message string, defaultValue bool) bool

Types

type JSONTime

type JSONTime struct {
	time.Time
}

JSONTime is a timestamp that can be serialized into JSON format

func (*JSONTime) MarshalJSON

func (j *JSONTime) MarshalJSON() ([]byte, error)

MarshalJSON converts a JSONTime struct into a JSON byte buf

func (*JSONTime) UnmarshalJSON

func (j *JSONTime) UnmarshalJSON(buf []byte) error

UnmarshalJSON converts buf into a JSONTime struct

func (*JSONTime) Value

func (j *JSONTime) Value() (driver.Value, error)

type RangeConstraint

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

func NewRangeConstraint

func NewRangeConstraint(minimum int, maximum int) RangeConstraint

func (*RangeConstraint) Constrain

func (r *RangeConstraint) Constrain(value int) int

Constrain a number to be within a range.

type TimeRange

type TimeRange struct {
	From *time.Time `json:"from"`
	To   *time.Time `json:"to"`
}

func (TimeRange) Empty

func (t TimeRange) Empty() bool

func (TimeRange) Equals

func (t TimeRange) Equals(other TimeRange) bool

type UniqueNameGenerator

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

func NewUniqueNameGenerator

func NewUniqueNameGenerator() *UniqueNameGenerator

NewUniqueNameGenerator creates a new UniqueNameGenerator

func (*UniqueNameGenerator) GetUniqueName

func (g *UniqueNameGenerator) GetUniqueName(name string, index int) (string, error)

GetUniqueName returns a unique name based on the input name If the input name is not unique, a random lowercase string is appended to the name This is used in steampipe and powerpipe to ensure unique column names in JSON output when same columns are requested.

Jump to

Keyboard shortcuts

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