| package runtime |
| |
| type rt struct { |
| logger *Logger |
| modeOverride string |
| } |
| |
| // Interface is the interface for the runtime library. |
| type Interface interface { |
| Run([]string) error |
| } |
| |
| // Option is a function that configures the runtime. |
| type Option func(*rt) |
| |
| // New creates a runtime with the specified options. |
| func New(opts ...Option) Interface { |
| r := rt{} |
| for _, opt := range opts { |
| opt(&r) |
| } |
| if r.logger == nil { |
| r.logger = NewLogger() |
| } |
| return &r |
| } |
| |
| // WithModeOverride allows for overriding the mode specified in the config. |
| func WithModeOverride(mode string) Option { |
| return func(r *rt) { |
| r.modeOverride = mode |
| } |
| } |