37 lines
996 B
Go
37 lines
996 B
Go
// Package helper runs external helpers with optional sandboxing and manages their status/args pipes.
|
|
package helper
|
|
|
|
import (
|
|
"errors"
|
|
"os/exec"
|
|
)
|
|
|
|
var (
|
|
ErrStatusFault = errors.New("generic status pipe fault")
|
|
ErrStatusRead = errors.New("unexpected status response")
|
|
)
|
|
|
|
const (
|
|
// FortifyHelper is set for the process launched by Helper.
|
|
FortifyHelper = "FORTIFY_HELPER"
|
|
// FortifyStatus is 1 when sync fd is enabled and 0 otherwise.
|
|
FortifyStatus = "FORTIFY_STATUS"
|
|
)
|
|
|
|
type Helper interface {
|
|
// StartNotify starts the helper process.
|
|
// A status pipe is passed to the helper if ready is not nil.
|
|
StartNotify(ready chan error) error
|
|
// Start starts the helper process.
|
|
Start() error
|
|
// Close closes the status pipe.
|
|
// If helper is started without the status pipe, Close panics.
|
|
Close() error
|
|
// Wait calls wait on the child process and cleans up pipes.
|
|
Wait() error
|
|
// Unwrap returns the underlying exec.Cmd instance.
|
|
Unwrap() *exec.Cmd
|
|
}
|
|
|
|
var execCommand = exec.Command
|