version.go raw

   1  package scw
   2  
   3  import (
   4  	"fmt"
   5  	"runtime"
   6  	"runtime/debug"
   7  )
   8  
   9  // TODO: versioning process
  10  const (
  11  	defaultVersion = "v1.0.0-beta.7+dev"
  12  	path           = "github.com/scaleway/scaleway-sdk-go"
  13  )
  14  
  15  var cachedVersion = (*string)(nil)
  16  
  17  func getVersion() string {
  18  	if cachedVersion == nil {
  19  		debugVersion := ""
  20  		b, ok := debug.ReadBuildInfo()
  21  		if ok {
  22  			for _, dep := range b.Deps {
  23  				if dep.Path == path {
  24  					debugVersion = dep.Version
  25  				}
  26  			}
  27  		}
  28  
  29  		cachedVersion = &debugVersion
  30  	}
  31  
  32  	if *cachedVersion != "" {
  33  		return *cachedVersion
  34  	}
  35  
  36  	return defaultVersion
  37  }
  38  
  39  var userAgent = fmt.Sprintf("scaleway-sdk-go/%s (%s; %s; %s)", getVersion(), runtime.Version(), runtime.GOOS, runtime.GOARCH)
  40