Files
atlantis/server/core/config/raw/workflow.go
Ken Kaizu cb0aadf571 feat: state rm (#2880)
* feat: state rm

* review feedback

* fix conflict for pegomock generation code

* adopt state command into allow-commands

* fix conflicts

* fix: state rm works on workspace

* notify import/state rm discard plan file

* fix lint

* use repeat instead warning for re-plan

* perl -pi -e 's!\* 🔁 plan file was discarded. to!🚮 A plan file was discarded. Re-plan would be required before applying.\n\n\* 🔁 To!g' server/**/*

* follow main branch
2023-01-18 22:02:18 -06:00

47 lines
1.3 KiB
Go

package raw
import (
validation "github.com/go-ozzo/ozzo-validation"
"github.com/runatlantis/atlantis/server/core/config/valid"
)
type Workflow struct {
Apply *Stage `yaml:"apply,omitempty" json:"apply,omitempty"`
Plan *Stage `yaml:"plan,omitempty" json:"plan,omitempty"`
PolicyCheck *Stage `yaml:"policy_check,omitempty" json:"policy_check,omitempty"`
Import *Stage `yaml:"import,omitempty" json:"import,omitempty"`
StateRm *Stage `yaml:"state_rm,omitempty" json:"state_rm,omitempty"`
}
func (w Workflow) Validate() error {
return validation.ValidateStruct(&w,
validation.Field(&w.Apply),
validation.Field(&w.Plan),
validation.Field(&w.PolicyCheck),
validation.Field(&w.Import),
validation.Field(&w.StateRm),
)
}
func (w Workflow) toValidStage(stage *Stage, defaultStage valid.Stage) valid.Stage {
if stage == nil || stage.Steps == nil {
return defaultStage
}
return stage.ToValid()
}
func (w Workflow) ToValid(name string) valid.Workflow {
v := valid.Workflow{
Name: name,
}
v.Apply = w.toValidStage(w.Apply, valid.DefaultApplyStage)
v.Plan = w.toValidStage(w.Plan, valid.DefaultPlanStage)
v.PolicyCheck = w.toValidStage(w.PolicyCheck, valid.DefaultPolicyCheckStage)
v.Import = w.toValidStage(w.Import, valid.DefaultImportStage)
v.StateRm = w.toValidStage(w.StateRm, valid.DefaultStateRmStage)
return v
}