storj.io/uplink@v1.13.0/private/version/version.go (about)

     1  // Copyright (C) 2021 Storj Labs, Inc.
     2  // See LICENSE for copying information.
     3  
     4  package version
     5  
     6  import (
     7  	"github.com/zeebo/errs"
     8  
     9  	"storj.io/common/useragent"
    10  	"storj.io/common/version/buildinfo"
    11  )
    12  
    13  // AppendVersionToUserAgent appends uplink product and version to user agent string.
    14  //
    15  // This doesn't work in test environment.
    16  func AppendVersionToUserAgent(useragentStr string) (string, error) {
    17  	version, err := buildinfo.FromBuild("storj.io/uplink")
    18  	if err != nil {
    19  		return useragentStr, nil //nolint: nilerr // passthrough
    20  	}
    21  	entries := []useragent.Entry{}
    22  	if len(useragentStr) > 0 {
    23  		entries, err = useragent.ParseEntries([]byte(useragentStr))
    24  		if err != nil {
    25  			return "", errs.New("invalid user agent: %w", err)
    26  		}
    27  	}
    28  
    29  	// uplink, built locally, using go.work references
    30  	if version == "(devel)" {
    31  		version = ""
    32  	}
    33  
    34  	entries = append(entries, useragent.Entry{
    35  		Product: "uplink",
    36  		Version: version,
    37  	})
    38  	newUseragent, err := useragent.EncodeEntries(entries)
    39  	if err != nil {
    40  		return "", errs.New("unable to encode user agent entries: %w", err)
    41  	}
    42  	return string(newUseragent), nil
    43  }