github.com/vmware/govmomi@v0.51.0/cli/flags/version.go (about) 1 // © Broadcom. All Rights Reserved. 2 // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. 3 // SPDX-License-Identifier: Apache-2.0 4 5 package flags 6 7 import ( 8 "strconv" 9 "strings" 10 ) 11 12 var ( 13 BuildVersion = "v0.0.0" // govc-test requires an (arbitrary) version set 14 BuildCommit string 15 BuildDate string 16 ) 17 18 type version []int 19 20 func ParseVersion(s string) (version, error) { 21 // remove any trailing "v" version identifier 22 s = strings.TrimPrefix(s, "v") 23 v := make(version, 0) 24 25 ds := strings.Split(s, "-") 26 ps := strings.Split(ds[0], ".") 27 for _, p := range ps { 28 i, err := strconv.Atoi(p) 29 if err != nil { 30 return nil, err 31 } 32 33 v = append(v, i) 34 } 35 36 return v, nil 37 } 38 39 func (v version) Lte(u version) bool { 40 lv := len(v) 41 lu := len(u) 42 43 for i := 0; i < lv; i++ { 44 // Everything up to here has been equal and v has more elements than u. 45 if i >= lu { 46 return false 47 } 48 49 // Move to next digit if equal. 50 if v[i] == u[i] { 51 continue 52 } 53 54 return v[i] < u[i] 55 } 56 57 // Equal. 58 return true 59 }