github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/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 }