utils

package
v0.116.4 Latest Latest
Warning

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

Go to latest
Published: Aug 13, 2024 License: MIT Imports: 23 Imported by: 1

Documentation

Overview

Package utils ...

Index

Constants

This section is empty.

Variables

View Source
var InContainer = FileExists("/.dockerenv") || FileExists("/.containerenv") ||
	os.Getenv("KUBERNETES_SERVICE_HOST") != ""

InContainer will be true if is inside container environment, such as docker.

View Source
var Panic = func(v interface{}) { panic(v) }

Panic is the same as the built-in panic.

View Source
var TestEnvs = map[string]string{
	"GODEBUG": "tracebackancestors=100",
}

TestEnvs for testing.

Functions

func AbsolutePaths

func AbsolutePaths(paths []string) []string

AbsolutePaths returns absolute paths of files in current working directory.

func All

func All(actions ...func()) func()

All runs all actions concurrently, returns the wait function for all actions.

func CropImage

func CropImage(bin []byte, quality, x, y, width, height int) ([]byte, error)

CropImage by the specified box, quality is only for jpeg bin.

func DefaultBackoff

func DefaultBackoff(interval time.Duration) time.Duration

DefaultBackoff algorithm: A(n) = A(n-1) * random[1.9, 2.1).

func Dump

func Dump(list ...interface{}) string

Dump values for debugging.

func E

func E(args ...interface{}) []interface{}

E if the last arg is error, panic it.

func EscapeGoString

func EscapeGoString(s string) string

EscapeGoString not using encoding like base64 or gzip because of they will make git diff every large for small change.

func Exec

func Exec(line string, rest ...string) string

Exec command.

func ExecLine

func ExecLine(std bool, line string, rest ...string) string

ExecLine of command.

func FileExists

func FileExists(path string) bool

FileExists checks if file exists, only for file, not for dir.

func FormatCLIArgs

func FormatCLIArgs(args []string) string

FormatCLIArgs into one line string.

func Mkdir

func Mkdir(path string) error

Mkdir makes dir recursively.

func MustToJSON

func MustToJSON(data interface{}) string

MustToJSON encode data to json string.

func MustToJSONBytes

func MustToJSONBytes(data interface{}) []byte

MustToJSONBytes encode data to json bytes.

func Noop

func Noop()

Noop does nothing.

func OutputFile

func OutputFile(p string, data interface{}) error

OutputFile auto creates file if not exists, it will try to detect the data type and auto output binary, string or json.

func Pause

func Pause()

Pause the goroutine forever.

func RandString

func RandString(l int) string

RandString generate random string with specified string length.

func ReadString

func ReadString(p string) (string, error)

ReadString reads file as string.

func Retry

func Retry(ctx context.Context, s Sleeper, fn func() (stop bool, err error)) error

Retry fn and sleeper until fn returns true or s returns error.

func S

func S(tpl string, params ...interface{}) string

S Template render, the params is key-value pairs.

func Sleep

func Sleep(seconds float64)

Sleep the goroutine for specified seconds, such as 2.3 seconds.

func SplicePngVertical

func SplicePngVertical(files []ImgWithBox, format proto.PageCaptureScreenshotFormat, opt *ImgOption) ([]byte, error)

SplicePngVertical splice png vertically, if there is only one image, it will return the image directly. Only support png and jpeg format yet, webP is not supported because no suitable processing library was found in golang.

func UseNode

func UseNode(std bool)

UseNode installs Node.js and set the bin path to PATH env var.

Types

type IdleCounter

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

IdleCounter is similar to sync.WaitGroup but it only resolves if no jobs for specified duration.

func NewIdleCounter

func NewIdleCounter(d time.Duration) *IdleCounter

NewIdleCounter ...

func (*IdleCounter) Add

func (de *IdleCounter) Add()

Add ...

func (*IdleCounter) Done

func (de *IdleCounter) Done()

Done ...

func (*IdleCounter) Wait

func (de *IdleCounter) Wait(ctx context.Context)

Wait ...

type ImgOption

type ImgOption struct {
	Quality int
}

ImgOption is the option for image processing.

type ImgProcessor

type ImgProcessor interface {
	Encode(img image.Image, opt *ImgOption) ([]byte, error)
	Decode(file io.Reader) (image.Image, error)
}

ImgProcessor is the interface for image processing.

func NewImgProcessor

func NewImgProcessor(format proto.PageCaptureScreenshotFormat) (ImgProcessor, error)

NewImgProcessor create a ImgProcessor by the format.

type ImgWithBox

type ImgWithBox struct {
	Img []byte
	Box *image.Rectangle
}

ImgWithBox is a image with a box, if the box is nil, it means the whole image.

type Log

type Log func(msg ...interface{})

Log type for Println.

func MultiLogger

func MultiLogger(list ...Logger) Log

MultiLogger is similar to https://golang.org/pkg/io/#MultiWriter

func (Log) Println

func (l Log) Println(msg ...interface{})

Println interface.

type Logger

type Logger interface {
	// Same as fmt.Printf
	Println(vs ...interface{})
}

Logger interface.

var LoggerQuiet Logger = Log(func(_ ...interface{}) {})

LoggerQuiet does nothing.

type MaxSleepCountError

type MaxSleepCountError struct {
	// Max count
	Max int
}

MaxSleepCountError type.

func (*MaxSleepCountError) Error

func (e *MaxSleepCountError) Error() string

Error interface.

func (*MaxSleepCountError) Is

func (e *MaxSleepCountError) Is(err error) bool

Is interface.

type Sleeper

type Sleeper func(context.Context) error

Sleeper sleeps the current goroutine for sometime, returns the reason to wake, if ctx is done release resource.

func BackoffSleeper

func BackoffSleeper(initInterval, maxInterval time.Duration, algorithm func(time.Duration) time.Duration) Sleeper

BackoffSleeper returns a sleeper that sleeps in a backoff manner every time get called. The sleep interval of the sleeper will grow from initInterval to maxInterval by the specified algorithm, then use maxInterval as the interval. If maxInterval is not greater than 0, the sleeper will wake immediately. If algorithm is nil, DefaultBackoff will be used.

func CountSleeper

func CountSleeper(max int) Sleeper

CountSleeper wakes immediately. When counts to the max returns *ErrMaxSleepCount.

func EachSleepers

func EachSleepers(list ...Sleeper) Sleeper

EachSleepers returns a sleeper wakes up when each sleeper is awake. If a sleeper returns error, it will wake up immediately.

func RaceSleepers

func RaceSleepers(list ...Sleeper) Sleeper

RaceSleepers returns a sleeper wakes up when one of the sleepers wakes.

Directories

Path Synopsis
check-issue module
Package main A helper to run go test on CI with the right environment variables.
Package main A helper to run go test on CI with the right environment variables.
Package main ...
Package main ...
Package main ...
Package main ...
Package main ...
Package main ...
Package main ...
Package main ...
Package main It helps to launcher a transparent shell under the current shell with some extra environment variables that are required by rod testing.
Package main It helps to launcher a transparent shell under the current shell with some extra environment variables that are required by rod testing.
Package main ...
Package main ...

Jump to

Keyboard shortcuts

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