Select Git revision
setup.go 5.65 KiB
package setup
import (
"context"
"git.perx.ru/perxis/perxis-go/pkg/clients"
"git.perx.ru/perxis/perxis-go/pkg/collections"
"git.perx.ru/perxis/perxis-go/pkg/content"
"git.perx.ru/perxis/perxis-go/pkg/errors"
"git.perx.ru/perxis/perxis-go/pkg/items"
"git.perx.ru/perxis/perxis-go/pkg/roles"
"git.perx.ru/perxis/perxis-go/pkg/spaces"
"go.uber.org/zap"
)
var (
ErrInvalidSetupConfig = errors.New("invalid setup config")
)
// Setup реализует процесс настройки пространства. Указав необходимые требования к конфигурации пространства можно
// выполнить процесс установки, проверки и удаления требований.
type Setup struct {
SpaceID string
EnvironmentID string
Roles []RoleConfig
Clients []ClientConfig
Collections []CollectionConfig
Items []ItemConfig
content *content.Content
force bool
remove bool
errors []error
logger *zap.Logger
}
func NewSetup(content *content.Content, spaceID, environmentID string, logger *zap.Logger) *Setup {
if logger == nil {
logger = zap.NewNop()
}
logger = logger.With(zap.String("Space", spaceID), zap.String("Environment", environmentID))
return &Setup{
SpaceID: spaceID,
EnvironmentID: environmentID,
content: content,
logger: logger,
}
}
func (s *Setup) WithForce(force bool) *Setup {
setup := *s
setup.force = force
return &setup
}
func (s *Setup) IsForce() bool {
return s.force
}
func (s *Setup) WithRemove(remove bool) *Setup {
setup := *s
setup.remove = remove
return &setup
}