execx

package
v1.1.24 Latest Latest
Warning

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

Go to latest
Published: Jul 29, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Copy

func Copy[Datas ~[]Data, Data any](writer Writer[Datas, Data], reader Reader[Datas, Data]) (n int64, err error)

func CopyBuffer

func CopyBuffer[Datas ~[]Data, Data any](writer Writer[Datas, Data], reader Reader[Datas, Data], buf Datas) (n int64, err error)

CopyBuffer 从 reader 复制数据到 writer,使用 buf 作为中间缓冲区 返回总共复制的字节数和错误 如果 buf 为 nil 或长度为 0,会根据 Data 类型大小动态创建一个约 32KB 的缓冲区

Types

type Buffer

type Buffer[Datas ~[]Data, Data any] interface {
	Write(datas Datas) (n int, err error)
	Datas() Datas
	TotalWritten() int64
	IsTruncated() bool
	Reset()
}

func NewReadBuffer

func NewReadBuffer[Datas ~[]Data, Data any](opts ReadOptions) Buffer[Datas, Data]

type BytesReadResult

type BytesReadResult = ReadResult[[]byte, byte]

type ExecuteOptions

type ExecuteOptions struct {
	ShellMode      bool
	Shell          string // shell 命令,默认为 "sh"
	Timeout        time.Duration
	WorkDir        string
	Stdin          io.Reader
	StdoutLimit    int              // stdout 输出长度限制,0 表示不限制
	StdoutStrategy TruncateStrategy // stdout 截断策略,head 或 tail
	StderrLimit    int              // stderr 输出长度限制,0 表示不限制
	StderrStrategy TruncateStrategy // stderr 截断策略,head 或 tail
}

ExecuteOptions 执行选项

func (*ExecuteOptions) Apply

func (opts *ExecuteOptions) Apply(options ...Option)

Apply 应用选项

type ExecuteResult

type ExecuteResult struct {
	ExitCode        int
	Stdout          string
	StdoutTruncated bool
	Stderr          string
	StderrTruncated bool
	StartTime       time.Time
	EndTime         time.Time
	ExpiredDuration time.Duration
	Error           error
}

func Execute

func Execute(ctx context.Context, args []string, opts ...Option) (*ExecuteResult, error)

Execute 在当前系统执行命令

type Option

type Option func(*ExecuteOptions)

Option 选项函数类型

func WithShell

func WithShell(shell string) Option

WithShell 设置 shell 命令(仅在 ShellMode 为 true 时生效)

func WithShellMode

func WithShellMode(shellMode bool) Option

WithShellMode 设置 shell 模式

func WithStderrLimit

func WithStderrLimit(limit int) Option

WithStderrLimit 设置 stderr 输出长度限制

func WithStderrStrategy

func WithStderrStrategy(strategy TruncateStrategy) Option

WithStderrStrategy 设置 stderr 截断策略

func WithStdin

func WithStdin(stdin io.Reader) Option

WithStdin 设置标准输入

func WithStdoutLimit

func WithStdoutLimit(limit int) Option

WithStdoutLimit 设置 stdout 输出长度限制

func WithStdoutStrategy

func WithStdoutStrategy(strategy TruncateStrategy) Option

WithStdoutStrategy 设置 stdout 截断策略

func WithTimeout

func WithTimeout(timeout time.Duration) Option

WithTimeout 设置超时时间

func WithWorkDir

func WithWorkDir(workDir string) Option

WithWorkDir 设置工作目录

type ReadOption

type ReadOption func(*ReadOptions)

func WithLimit

func WithLimit(limit int) ReadOption

func WithReadRest

func WithReadRest(readRest bool) ReadOption

func WithStrategy

func WithStrategy(strategy TruncateStrategy) ReadOption

type ReadOptions

type ReadOptions struct {
	Limit    int              // 输出长度限制,0 表示不限制
	Strategy TruncateStrategy // 截断策略,head 或 tail
	ReadRest bool             // 是否读取剩余数据,默认不读取
}

ReadOptions 输出读取选项

func (*ReadOptions) Apply

func (opts *ReadOptions) Apply(options ...ReadOption)

Apply 应用选项

type ReadResult

type ReadResult[Datas ~[]Data, Data any] struct {
	Data      Datas // 读取的数据
	Total     int   // 总读取的字节数,包括截断后的数据
	Truncated bool  // 是否被截断
	Error     error // 读取错误
}

ReadResult 输出读取结果

func Read

func Read[Datas ~[]Data, Data any](reader Reader[Datas, Data], opts ...ReadOption) ReadResult[Datas, Data]

Read 读取输出流,支持限制和截断策略

type Reader

type Reader[Datas ~[]Data, Data any] interface {
	Read(p Datas) (n int, err error)
}

type TruncateStrategy

type TruncateStrategy string
const (
	TruncateHead TruncateStrategy = "head"
	TruncateTail TruncateStrategy = "tail"
)

type Writer

type Writer[Datas ~[]Data, Data any] interface {
	Write(datas Datas) (n int, err error)
}

Jump to

Keyboard shortcuts

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