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  }