execs

package module
v1.1.5 Latest Latest
Warning

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

Go to latest
Published: Jan 19, 2023 License: MIT Imports: 14 Imported by: 0

README

execs

commands and runners executors

Documentation

Overview

Package execs функционал для работы с командами оболочки, запуск процессов и так далее

nolint: dupl

nolint: dupl

Index

Constants

View Source
const (
	// InvalidExitCode - код возврата процесса "выход с ошибкой"
	InvalidExitCode = 254

	// ExitCodePrefix - префикс кода возвращаемого процессом
	ExitCodePrefix = 128
)

Variables

This section is empty.

Functions

func Eval

func Eval(expr string) (string, error)

Eval - вычислить произвольное выражение в оболочке

func InterruptHandler

func InterruptHandler(ctx context.Context, handles ...func()) context.Context

InterruptHandler - запускает обработчик сигналов прерывания программы и возвращает контекст с синхронизацией завершения работы

func NewCommand

func NewCommand(path string, command Command) *exec.Cmd

NewCommand - конструктор команды оболочки nolint

func Result

func Result(name string, command Command, writers ...io.Writer) (string, error)

Result - возвращает результат выполнения команды оболочки из stdout ctx обязан содержать zap.Logger

func Run

func Run(name string, command Command, writers ...io.Writer) error

Run - запускает команду оболочки с ожиданием выполнения

Types

type BufferProvider

type BufferProvider interface {
	Buffer() *iorw.Buffer
}

BufferProvider - буферизируемый объект

type Command

type Command interface {
	Args() []string
	SessionName() string
}

Command - инерфейс команды системной командной оболочки

type Enverer

type Enverer interface {
	Env() []string
}

Enverer - интерфейс объектов использующих переменные окружения

type EvalCmd

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

EvalCmd - команда выполнения произвольного выражения в оболочке

func (*EvalCmd) Args

func (cmd *EvalCmd) Args() []string

Args - аргументы команды

func (*EvalCmd) SessionName

func (*EvalCmd) SessionName() string

SessionName - имя запускаемой сессии оболочки

type ExitEvent

type ExitEvent struct {
	Member Member
	Err    error
}

ExitEvent - событие завершения процесса Runner

type ExitTrace added in v1.1.2

type ExitTrace []ExitEvent

ExitTrace трассировка статусов завершений процессов

type Exiter

type Exiter interface {
	ExitCode() int
}

Exiter - завершаемый объект

type Member

type Member struct {
	Name string
	Runner
}

Member реализация участника группы раннеров

type Members

type Members []Member

Members группа раннеров

type PrefixedWriter

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

PrefixedWriter - io.Writer с префексированным выводом

func NewPrefixedWriter

func NewPrefixedWriter(prefix string, writer io.Writer) *PrefixedWriter

NewPrefixedWriter - конструктор префексированного io.Writer

func (*PrefixedWriter) Write

func (w *PrefixedWriter) Write(b []byte) (int, error)

type Process

type Process interface {
	// Ready синхронизация готовности процесса
	Ready() <-chan struct{}
	// Wait синхронизация завершения процесса
	Wait() <-chan error
	// Signal отправка системного сигнала процессу
	Signal(os.Signal)
}

Process интерфейс процесса

func Background

func Background(r Runner) Process

Background - конструтор процесса запущенного в бэкграутнд моде

func Start

func Start(r Runner) Process

Start - конструктор процесса

type RunFunc

type RunFunc func(signals <-chan os.Signal, ready chan<- struct{}) error

RunFunc - функция стартер

func (RunFunc) Run

func (r RunFunc) Run(signals <-chan os.Signal, ready chan<- struct{}) error

Run - хэндлер функции стартера

type Runner

type Runner interface {
	// Run хэндлер функции стартера
	Run(signals <-chan os.Signal, ready chan<- struct{}) error
}

Runner - стартер управляемого метода, объекта либо груупы таковых

func NewOrdered

func NewOrdered(members ...Member) Runner

NewOrdered - конструктор группы последовательного запуска раннеров

func NewParallel

func NewParallel(members ...Member) Runner

NewParallel конструктор параллельного запуска раннеров группы

type Session

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

Session - враппер для запуска и управления процессом командной оболочки

func StartCmd

func StartCmd(cmd *exec.Cmd, writers ...io.Writer) (*Session, error)

StartCmd - запускает команду оболочки завернутую в управляющую обертку

func (*Session) Buffer

func (s *Session) Buffer() *iorw.Buffer

Buffer - возвращает буфер вывода процесса сессии

func (*Session) ErrLog

func (s *Session) ErrLog() <-chan error

ErrLog - возвращает канал в который отправляются ошибки времени выполнения, можно использовать в логере

func (*Session) ExitCode

func (s *Session) ExitCode() int

ExitCode - возвращает код возврата процесса

func (*Session) Interrupt

func (s *Session) Interrupt() *Session

Interrupt - посылает системный сигнал `kill -2` процессу

func (*Session) Kill

func (s *Session) Kill() *Session

Kill - посылает системный сигнал `kill -9` процессу

func (*Session) Signal

func (s *Session) Signal(signal os.Signal) *Session

Signal - посылает произвольный сигнал процессу

func (*Session) Terminate

func (s *Session) Terminate() *Session

Terminate - посылает системный сигнал `kill -15` процессу

func (*Session) Wait

func (s *Session) Wait(timeout ...any) *Session

Wait - ожидает завершения процесса

type WorkingDirer

type WorkingDirer interface {
	WorkingDir() string
}

WorkingDirer - интерфейс объектов использующих рабочую директорию

Jump to

Keyboard shortcuts

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