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  }