func auditStepLibBeforeSharePullRequest(gitURI string) error { if exist, err := stepman.RootExistForCollection(gitURI); err != nil { return err } else if !exist { return fmt.Errorf("Missing routing for collection, call 'stepman setup -c %s' before audit.", gitURI) } collection, err := stepman.ReadStepSpec(gitURI) if err != nil { return err } for stepID, stepGroup := range collection.Steps { log.Debugf("Start audit StepGrup, with ID: (%s)", stepID) for version, step := range stepGroup.Versions { log.Debugf("Start audit Step (%s) (%s)", stepID, version) if err := auditStepModelBeforeSharePullRequest(step, stepID, version); err != nil { log.Errorf(" * "+colorstring.Redf("[FAILED] ")+"Failed audit (%s) (%s)", stepID, version) return fmt.Errorf(" Error: %s", err.Error()) } log.Infof(" * "+colorstring.Greenf("[OK] ")+"Success audit (%s) (%s)", stepID, version) } } return nil }
func printRawValidation(validation ValidationModel) error { validConfig := true if validation.Config != nil { fmt.Println(colorstring.Blue("Config validation result:")) configValidation := *validation.Config if configValidation.IsValid { fmt.Printf("is valid: %s\n", colorstring.Greenf("%v", configValidation.IsValid)) } else { fmt.Printf("is valid: %s\n", colorstring.Redf("%v", configValidation.IsValid)) fmt.Printf("error: %s\n", colorstring.Red(configValidation.Error)) validConfig = false } fmt.Println() } validSecrets := true if validation.Secrets != nil { fmt.Println(colorstring.Blue("Secret validation result:")) secretValidation := *validation.Secrets if secretValidation.IsValid { fmt.Printf("is valid: %s\n", colorstring.Greenf("%v", secretValidation.IsValid)) } else { fmt.Printf("is valid: %s\n", colorstring.Redf("%v", secretValidation.IsValid)) fmt.Printf("error: %s\n", colorstring.Red(secretValidation.Error)) validSecrets = false } } if !validConfig && !validSecrets { return errors.New("Config and secrets are invalid") } else if !validConfig { return errors.New("Config is invalid") } else if !validSecrets { return errors.New("Secret is invalid") } return nil }
// String ... func (v ValidationModel) String() string { msg := "" if v.Config != nil { config := *v.Config if config.IsValid { msg += fmt.Sprintf("Config is valid: %s", colorstring.Greenf("%v", true)) } else { msg += fmt.Sprintf("Config is valid: %s", colorstring.Redf("%v", false)) msg += fmt.Sprintf("\nError: %s", colorstring.Red(config.Error)) } if len(config.Warnings) > 0 { msg += "\nWarning(s):\n" for i, warning := range config.Warnings { msg += fmt.Sprintf("- %s", warning) if i != len(config.Warnings)-1 { msg += "\n" } } } } if v.Secrets != nil { if v.Config != nil { msg += "\n" } secret := *v.Secrets if secret.IsValid { msg += fmt.Sprintf("Secret is valid: %s", colorstring.Greenf("%v", true)) } else { msg += fmt.Sprintf("Secret is valid: %s", colorstring.Redf("%v", false)) msg += fmt.Sprintf("\nError: %s", colorstring.Red(secret.Error)) } } return msg }