// ReadSpecStep ... func ReadSpecStep(pth string) (stepmanModels.StepModel, error) { if isExists, err := pathutil.IsPathExists(pth); err != nil { return stepmanModels.StepModel{}, err } else if !isExists { return stepmanModels.StepModel{}, fmt.Errorf("No file found at path: %s", pth) } bytes, err := fileutil.ReadBytesFromFile(pth) if err != nil { return stepmanModels.StepModel{}, err } var stepModel stepmanModels.StepModel if err := yaml.Unmarshal(bytes, &stepModel); err != nil { return stepmanModels.StepModel{}, err } if err := stepModel.Normalize(); err != nil { return stepmanModels.StepModel{}, err } if err := stepModel.ValidateInputAndOutputEnvs(false); err != nil { return stepmanModels.StepModel{}, err } if err := stepModel.FillMissingDefaults(); err != nil { return stepmanModels.StepModel{}, err } return stepModel, nil }