github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/fly/version/version.go (about)

     1  package version
     2  
     3  import (
     4  	"fmt"
     5  
     6  	semver "github.com/cppforlife/go-semi-semantic/version"
     7  )
     8  
     9  func GetSemver(versionStr string) (major int, minor int, patch int, err error) {
    10  	version, err := semver.NewVersionFromString(versionStr)
    11  	if err != nil {
    12  		return
    13  	}
    14  
    15  	if len(version.Release.Components) == 3 {
    16  		major = version.Release.Components[0].(semver.VerSegCompInt).I
    17  		minor = version.Release.Components[1].(semver.VerSegCompInt).I
    18  		patch = version.Release.Components[2].(semver.VerSegCompInt).I
    19  	} else {
    20  		err = fmt.Errorf("Wrong number of components")
    21  		return
    22  	}
    23  
    24  	return major, minor, patch, nil
    25  }
    26  
    27  func IsDev(versionStr string) bool {
    28  	version, err := semver.NewVersionFromString(versionStr)
    29  	if err != nil {
    30  		return false
    31  	}
    32  
    33  	for _, item := range version.PreRelease.Components {
    34  		if item.AsString() == "dev" {
    35  			return true
    36  		}
    37  	}
    38  
    39  	for _, item := range version.PostRelease.Components {
    40  		if item.AsString() == "dev" {
    41  			return true
    42  		}
    43  	}
    44  	return false
    45  }