2019-09-24 18:32:35 +01:00
|
|
|
package runtime
|
|
|
|
|
2019-09-24 19:00:11 +01:00
|
|
|
import (
|
|
|
|
"io"
|
|
|
|
)
|
|
|
|
|
2019-11-02 13:25:10 +00:00
|
|
|
type Option func(o *Options)
|
|
|
|
|
|
|
|
// Options configure runtime
|
|
|
|
type Options struct {
|
2020-01-16 13:34:04 +00:00
|
|
|
// Scheduler for updates
|
|
|
|
Scheduler Scheduler
|
2019-11-29 11:35:00 +00:00
|
|
|
// Service type to manage
|
|
|
|
Type string
|
2019-11-02 13:25:10 +00:00
|
|
|
}
|
|
|
|
|
2020-01-16 13:34:04 +00:00
|
|
|
// WithScheduler specifies a scheduler for updates
|
|
|
|
func WithScheduler(n Scheduler) Option {
|
2019-11-02 13:25:10 +00:00
|
|
|
return func(o *Options) {
|
2020-01-16 13:34:04 +00:00
|
|
|
o.Scheduler = n
|
2019-11-02 13:25:10 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-11-29 11:35:00 +00:00
|
|
|
// WithType sets the service type to manage
|
|
|
|
func WithType(t string) Option {
|
|
|
|
return func(o *Options) {
|
|
|
|
o.Type = t
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-09-24 18:32:35 +01:00
|
|
|
type CreateOption func(o *CreateOptions)
|
|
|
|
|
2019-11-29 11:35:00 +00:00
|
|
|
type ReadOption func(o *ReadOptions)
|
|
|
|
|
2019-11-02 13:25:10 +00:00
|
|
|
// CreateOptions configure runtime services
|
2019-09-24 18:32:35 +01:00
|
|
|
type CreateOptions struct {
|
|
|
|
// command to execute including args
|
|
|
|
Command []string
|
|
|
|
// Environment to configure
|
|
|
|
Env []string
|
2019-09-24 19:00:11 +01:00
|
|
|
// Log output
|
|
|
|
Output io.Writer
|
2019-11-29 11:35:00 +00:00
|
|
|
// Type of service to create
|
|
|
|
Type string
|
|
|
|
}
|
|
|
|
|
|
|
|
// ReadOptions queries runtime services
|
|
|
|
type ReadOptions struct {
|
|
|
|
// Service name
|
|
|
|
Service string
|
|
|
|
// Version queries services with given version
|
|
|
|
Version string
|
|
|
|
// Type of service
|
|
|
|
Type string
|
2019-09-24 18:32:35 +01:00
|
|
|
}
|
|
|
|
|
2020-01-17 14:14:47 +00:00
|
|
|
// CreateType sets the type of service to create
|
|
|
|
func CreateType(t string) CreateOption {
|
|
|
|
return func(o *CreateOptions) {
|
|
|
|
o.Type = t
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-09-24 19:00:11 +01:00
|
|
|
// WithCommand specifies the command to execute
|
2019-11-29 11:55:25 +00:00
|
|
|
func WithCommand(args ...string) CreateOption {
|
2019-09-24 18:32:35 +01:00
|
|
|
return func(o *CreateOptions) {
|
|
|
|
// set command
|
2019-11-29 11:55:25 +00:00
|
|
|
o.Command = args
|
2019-09-24 18:32:35 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-11-02 13:25:10 +00:00
|
|
|
// WithEnv sets the created service environment
|
2019-09-24 18:32:35 +01:00
|
|
|
func WithEnv(env []string) CreateOption {
|
|
|
|
return func(o *CreateOptions) {
|
|
|
|
o.Env = env
|
|
|
|
}
|
|
|
|
}
|
2019-09-24 19:00:11 +01:00
|
|
|
|
|
|
|
// WithOutput sets the arg output
|
|
|
|
func WithOutput(out io.Writer) CreateOption {
|
|
|
|
return func(o *CreateOptions) {
|
|
|
|
o.Output = out
|
|
|
|
}
|
|
|
|
}
|
2019-11-15 13:41:40 +00:00
|
|
|
|
2019-11-29 11:35:00 +00:00
|
|
|
// ReadService returns services with the given name
|
|
|
|
func ReadService(service string) ReadOption {
|
|
|
|
return func(o *ReadOptions) {
|
|
|
|
o.Service = service
|
|
|
|
}
|
2019-11-15 13:41:40 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// WithVersion confifgures service version
|
2019-11-29 11:35:00 +00:00
|
|
|
func ReadVersion(version string) ReadOption {
|
2019-11-25 16:31:14 +00:00
|
|
|
return func(o *ReadOptions) {
|
2019-11-15 13:41:40 +00:00
|
|
|
o.Version = version
|
|
|
|
}
|
|
|
|
}
|
2019-11-29 11:35:00 +00:00
|
|
|
|
|
|
|
// ReadType returns services of the given type
|
|
|
|
func ReadType(t string) ReadOption {
|
|
|
|
return func(o *ReadOptions) {
|
|
|
|
o.Type = t
|
|
|
|
}
|
|
|
|
}
|