45 lines
726 B
Go
45 lines
726 B
Go
package group
|
|
|
|
import (
|
|
"gitoa.ru/go-4devs/config"
|
|
"gitoa.ru/go-4devs/config/param"
|
|
)
|
|
|
|
var _ config.Group = New("", "")
|
|
|
|
func New(name, desc string, opts ...config.Option) *Group {
|
|
group := Group{
|
|
name: name,
|
|
opts: opts,
|
|
Params: param.New(param.WithDescription(desc)),
|
|
}
|
|
|
|
return &group
|
|
}
|
|
|
|
type Group struct {
|
|
param.Params
|
|
|
|
name string
|
|
opts []config.Option
|
|
}
|
|
|
|
func (g *Group) Name() string {
|
|
return g.name
|
|
}
|
|
|
|
func (g *Group) Options() []config.Option {
|
|
return g.opts
|
|
}
|
|
|
|
func (g *Group) Add(opts ...config.Option) {
|
|
g.opts = append(g.opts, opts...)
|
|
}
|
|
|
|
func (g *Group) With(opts ...param.Option) *Group {
|
|
group := New(g.Name(), "")
|
|
group.Params = param.Chain(g.Params, param.New(opts...))
|
|
|
|
return group
|
|
}
|