internal/version/version.go (47 lines of code) (raw):
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT
package version
import (
"fmt"
"os"
"path/filepath"
"runtime"
"strings"
)
const (
filename = "CWAGENT_VERSION"
unknownVersion = "Unknown"
)
var (
version = readVersionFile()
fullVersion = buildFullVersion(version)
)
func Number() string {
return version
}
func Full() string {
return fullVersion
}
func FilePath() (string, error) {
ex, err := os.Executable()
if err != nil {
return "", err
}
return filepath.Join(filepath.Dir(ex), filename), nil
}
func buildFullVersion(version string) string {
return fmt.Sprintf("CWAgent/%s (%s; %s; %s)",
version,
runtime.Version(),
runtime.GOOS,
runtime.GOARCH)
}
func readVersionFile() string {
versionFilePath, err := FilePath()
if err != nil {
return unknownVersion
}
content, err := os.ReadFile(versionFilePath)
if err != nil {
return unknownVersion
}
return strings.Trim(string(content), " \n\r\t")
}