pkg/runner/spec_definition.go (66 lines of code) (raw):
package runner
import (
"google.golang.org/protobuf/types/known/structpb"
"gitlab.com/gitlab-org/step-runner/proto"
)
type SpecDefinition struct {
spec *proto.Spec
definition *proto.Definition
dir string
}
func NewSpecDefinition(spec *proto.Spec, definition *proto.Definition, dir string) *SpecDefinition {
return &SpecDefinition{
spec: spec,
definition: definition,
dir: dir,
}
}
func (sd *SpecDefinition) ToProto() *proto.SpecDefinition {
return &proto.SpecDefinition{
Spec: sd.spec,
Definition: sd.definition,
}
}
func (sd *SpecDefinition) Dir() string {
return sd.dir
}
func (sd *SpecDefinition) SpecInputs() map[string]*proto.Spec_Content_Input {
return sd.spec.Spec.Inputs
}
func (sd *SpecDefinition) SpecOutputs() map[string]*proto.Spec_Content_Output {
return sd.spec.Spec.Outputs
}
func (sd *SpecDefinition) IsTypeExec() bool {
return sd.definition.Type == proto.DefinitionType_exec
}
func (sd *SpecDefinition) IsTypeSteps() bool {
return sd.definition.Type == proto.DefinitionType_steps
}
func (sd *SpecDefinition) Steps() []*proto.Step {
return sd.definition.Steps
}
func (sd *SpecDefinition) DescribeType() string {
return sd.definition.Type.String()
}
func (sd *SpecDefinition) ExecCommand() []string {
return sd.definition.Exec.Command
}
func (sd *SpecDefinition) Env() map[string]string {
return sd.definition.Env
}
func (sd *SpecDefinition) ExecWorkDir() string {
return sd.definition.Exec.WorkDir
}
func (sd *SpecDefinition) IsDelegateOutputs() bool {
return sd.spec.Spec.OutputMethod == proto.OutputMethod_delegate
}
func (sd *SpecDefinition) DelegateTo() string {
return sd.definition.Delegate
}
func (sd *SpecDefinition) DefinitionOutputs() map[string]*structpb.Value {
return sd.definition.Outputs
}
func (sd *SpecDefinition) SpecInputWithName(name string) (*proto.Spec_Content_Input, bool) {
input, ok := sd.spec.Spec.Inputs[name]
return input, ok
}