github.com/SAP/jenkins-library@v1.362.0/pkg/versioning/versioningModel.go (about)

     1  package versioning
     2  
     3  import (
     4  	"github.com/Masterminds/sprig"
     5  	"github.com/SAP/jenkins-library/pkg/log"
     6  	"github.com/SAP/jenkins-library/pkg/piperutils"
     7  )
     8  
     9  const (
    10  	// SchemeMajorVersion is the versioning scheme based on the major version only
    11  	SchemeMajorVersion = `{{(split "." (split "-" .Version)._0)._0}}`
    12  	// SchemeMajorMinorVersion is the versioning scheme based on the major version only
    13  	SchemeMajorMinorVersion = `{{(split "." (split "-" .Version)._0)._0}}.{{(split "." (split "-" .Version)._0)._1}}`
    14  	// SchemeSemanticVersion is the versioning scheme based on the major.minor.micro version
    15  	SchemeSemanticVersion = `{{(split "." (split "-" .Version)._0)._0}}.{{(split "." (split "-" .Version)._0)._1}}.{{(split "." (split "-" .Version)._0)._2}}`
    16  	// SchemeFullVersion is the versioning scheme based on the full version
    17  	SchemeFullVersion = "{{.Version}}"
    18  )
    19  
    20  const (
    21  	VersioningModelFull       string = "full"
    22  	VersioningModelSemantic   string = "semantic"
    23  	VersioningModelMajorMinor string = "major-minor"
    24  	VersioningModelMajor      string = "major"
    25  )
    26  
    27  func ApplyVersioningModel(model, projectVersion string) string {
    28  	var versioningScheme string
    29  
    30  	switch model {
    31  	case VersioningModelFull:
    32  		versioningScheme = SchemeFullVersion
    33  	case VersioningModelSemantic:
    34  		versioningScheme = SchemeSemanticVersion
    35  	case VersioningModelMajorMinor:
    36  		versioningScheme = SchemeMajorMinorVersion
    37  	case VersioningModelMajor:
    38  		versioningScheme = SchemeMajorVersion
    39  	default:
    40  		log.Entry().Warnf("versioning model not supported: %s", model)
    41  	}
    42  
    43  	version, err := piperutils.ExecuteTemplateFunctions(versioningScheme, sprig.HermeticTxtFuncMap(), Coordinates{Version: projectVersion})
    44  	if err != nil {
    45  		log.Entry().Warnf("unable to resolve project version: %v", err)
    46  	}
    47  	return version
    48  }