github.com/SAP/cloud-mta-build-tool@v1.2.27/internal/artifacts/validate.go (about) 1 package artifacts 2 3 import ( 4 "fmt" 5 "strconv" 6 "strings" 7 8 "github.com/pkg/errors" 9 10 "github.com/SAP/cloud-mta-build-tool/internal/archive" 11 "github.com/SAP/cloud-mta-build-tool/internal/logs" 12 "github.com/SAP/cloud-mta/validations" 13 ) 14 15 // ExecuteValidation - executes validation of MTA 16 func ExecuteValidation(source, desc string, extensions []string, mode, strict, exclude string, getWorkingDir func() (string, error)) error { 17 logs.Logger.Info(validationMsg) 18 19 strictValue, err := strconv.ParseBool(strict) 20 if err != nil { 21 return fmt.Errorf(wrongStrictnessMsg, strict) 22 } 23 24 loc, err := dir.Location(source, "", desc, extensions, getWorkingDir) 25 if err != nil { 26 return errors.Wrap(err, validationFailedOnLocMsg) 27 } 28 validateSchema, validateSemantic, err := validate.GetValidationMode(mode) 29 if err != nil { 30 return errors.Wrap(err, validationFailedOnModeMsg) 31 } 32 33 var validationErrors []string 34 warn, err := validate.MtaYaml(source, loc.GetMtaYamlFilename(), validateSchema, validateSemantic, strictValue, exclude) 35 if warn != "" { 36 logs.Logger.Warnf("%s: %s", loc.GetMtaYamlFilename(), warn) 37 } 38 if err != nil { 39 validationErrors = append(validationErrors, err.Error()) 40 } 41 42 for _, ext := range loc.GetExtensionFilePaths() { 43 warn, err = validate.Mtaext(source, ext, validateSchema, validateSemantic, strictValue, exclude) 44 if warn != "" { 45 logs.Logger.Warnf("%s: %s", ext, warn) 46 } 47 if err != nil { 48 validationErrors = append(validationErrors, err.Error()) 49 } 50 } 51 52 if len(validationErrors) > 0 { 53 return errors.New(strings.Join(validationErrors, "\n")) 54 } 55 56 return nil 57 }