in pkg/runner/step_resource_parser.go [24:45]
func (p *StepResourceParser) Parse(workDir string, stepRef *proto.Step_Reference) (StepResource, error) {
stepPath := p.stepPath(stepRef)
switch stepRef.Protocol {
case proto.StepReferenceProtocol_local:
return NewFileSystemStepResource(workDir, stepPath, stepRef.Filename), nil
case proto.StepReferenceProtocol_git:
return NewGitStepResource(p.gitFetcher, stepRef.Url, stepRef.Version, stepPath, stepRef.Filename), nil
case proto.StepReferenceProtocol_dist:
return NewDistStepResource(p.distFetcher, stepPath, stepRef.Filename), nil
case proto.StepReferenceProtocol_dynamic:
return NewDynamicStepResource(p, stepRef.Url), nil
case proto.StepReferenceProtocol_spec_def:
return NewFixedStepResource(NewSpecDefinition(stepRef.SpecDef.Spec, stepRef.SpecDef.Definition, stepPath)), nil
}
return nil, fmt.Errorf("unknown step reference protocol: %s", stepRef.Protocol)
}