Documentation
¶
Index ¶
Constants ¶
View Source
const PathEnvVar = "BAAMHACKL_CONFIG_FILE"
Variables ¶
View Source
var ErrMissingFile = errors.New("missing configuration file")
View Source
var ErrMultipleFragments = errors.New("input contained multiple YAML fragments")
View Source
var HandlerDefaults = Handler{ Timeout: time.Hour, SettleDuration: time.Second, RetryCount: 2, RetryDelayInitial: 15 * time.Minute, RetryDelayFactor: 1.5, RetryDelayMax: time.Hour, JournalDir: "_/journal", JournalRetention: 24 * 7 * time.Hour, SuccessDir: "_/success", FailureDir: "_/failure", }
Default configuration for a handler.
Functions ¶
This section is empty.
Types ¶
type Flag ¶
type Flag struct {
// contains filtered or unexported fields
}
Flag defines a command line flag to load a configuration file.
type Handler ¶
type Handler struct {
// Name of the trigger registered in Watchman.
Name string `yaml:"name" validate:"required"`
// Path to root directory.
Path string `yaml:"path" validate:"required"`
// Command executed when file changes are detected. Arguments are visible
// in log files and shouldn't contain confidential information such as
// passwords or access tokens.
Command []string `yaml:"command" validate:"required,gte=1"`
// Timeout for executing command.
Timeout time.Duration `yaml:"timeout" validate:"min=0"`
// Observe input directory recursively (excluding the infrastructure
// directories).
Recursive bool `yaml:"recursive"`
// Whether to process files with names starting with a dot (".").
IncludeHidden bool `yaml:"include_hidden"`
// Minimum file size for running command
MinSizeBytes uint64 `yaml:"min_size_bytes"`
// Maximum file size for running command
MaxSizeBytes uint64 `yaml:"max_size_bytes"`
// Amount of time the filesystem should be idle before dispatching
// triggers.
SettleDuration time.Duration `yaml:"settle_duration" validate:"min=0"`
// Number of times a failing command should be retried. Set to 0 to make
// the first failure permanent.
RetryCount int `yaml:"retry_count" validate:"min=0"`
// Amount of time to wait between retry attempts. A small and random amount
// of fuzzing is always applied.
RetryDelayInitial time.Duration `yaml:"retry_delay_initial" validate:"required,gt=0"`
// Backoff factor to apply between attempts after the first retry. Use 1 to
// always use the same delay.
RetryDelayFactor float64 `yaml:"retry_delay_factor" validate:"required,min=1"`
// Maximum amount of time waiting between retry attempts. Use 0s for no
// limit.
RetryDelayMax time.Duration `yaml:"retry_delay_max" validate:"eq=0|gtefield=RetryDelayInitial"`
// Directory into which journal entries are written.
JournalDir string `yaml:"journal_dir" validate:"required"`
// How long to keep journal entries.
JournalRetention time.Duration `yaml:"journal_retention" validate:"min=1h|gtefield=Timeout|gtefield=RetryDelayMax"`
// Directory into which files are moved whose processing succeeded.
SuccessDir string `yaml:"success_dir" validate:"required"`
// Directory into which files are moved whose processing failed.
FailureDir string `yaml:"failure_dir" validate:"required"`
}
Click to show internal directories.
Click to hide internal directories.