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 }