github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/command/minimum_version_check.go (about)

     1  package command
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/version"
     5  	"github.com/blang/semver"
     6  )
     7  
     8  const (
     9  	MinVersionLifecyleStagingV2         = "2.68.0"
    10  	MinVersionHTTPEndpointHealthCheckV2 = "2.68.0"
    11  	MinVersionProcessHealthCheckV2      = "2.47.0"
    12  
    13  	MinVersionRunTaskV3          = "3.0.0"
    14  	MinVersionIsolationSegmentV3 = "3.11.0"
    15  )
    16  
    17  func MinimumAPIVersionCheck(current string, minimum string) error {
    18  	if current == version.DefaultVersion || minimum == "" {
    19  		return nil
    20  	}
    21  
    22  	currentSemvar, err := semver.Make(current)
    23  	if err != nil {
    24  		return err
    25  	}
    26  
    27  	minimumSemvar, err := semver.Make(minimum)
    28  	if err != nil {
    29  		return err
    30  	}
    31  
    32  	if currentSemvar.Compare(minimumSemvar) == -1 {
    33  		return MinimumAPIVersionNotMetError{
    34  			CurrentVersion: current,
    35  			MinimumVersion: minimum,
    36  		}
    37  	}
    38  
    39  	return nil
    40  }
    41  
    42  func WarnAPIVersionCheck(config Config, ui UI) error {
    43  	// TODO: make private and refactor commands that use
    44  	err := MinimumAPIVersionCheck(config.BinaryVersion(), config.MinCLIVersion())
    45  
    46  	if _, ok := err.(MinimumAPIVersionNotMetError); ok {
    47  		ui.DisplayWarning("Cloud Foundry API version {{.APIVersion}} requires CLI version {{.MinCLIVersion}}. You are currently on version {{.BinaryVersion}}. To upgrade your CLI, please visit: https://github.com/cloudfoundry/cli#downloads",
    48  			map[string]interface{}{
    49  				"APIVersion":    config.APIVersion(),
    50  				"MinCLIVersion": config.MinCLIVersion(),
    51  				"BinaryVersion": config.BinaryVersion(),
    52  			})
    53  		ui.DisplayNewline()
    54  		return nil
    55  	}
    56  
    57  	// Only error if there was an issue in parsing versions
    58  	return err
    59  }