Add internal function for telegraf version (#4828)

This commit is contained in:
Kevin Conaway 2018-10-09 16:45:07 -04:00 committed by Daniel Nelson
parent 709eadffc4
commit 7bb219222a
3 changed files with 41 additions and 0 deletions

View File

@ -326,6 +326,16 @@ func main() {
return
}
shortVersion := version
if shortVersion == "" {
shortVersion = "unknown"
}
// Configure version
if err := internal.SetVersion(shortVersion); err != nil {
log.Println("Telegraf version already configured to: " + internal.Version())
}
if runtime.GOOS == "windows" && !(*fRunAsConsole) {
svcConfig := &service.Config{
Name: *fServiceName,

View File

@ -24,13 +24,32 @@ var (
TimeoutErr = errors.New("Command timed out.")
NotImplementedError = errors.New("not implemented yet")
VersionAlreadySetError = errors.New("version has already been set")
)
// Set via the main module
var version string
// Duration just wraps time.Duration
type Duration struct {
Duration time.Duration
}
// SetVersion sets the telegraf agent version
func SetVersion(v string) error {
if version != "" {
return VersionAlreadySetError
}
version = v
return nil
}
// Version returns the telegraf agent version
func Version() string {
return version
}
// UnmarshalTOML parses the duration from the TOML config file
func (d *Duration) UnmarshalTOML(b []byte) error {
var err error

View File

@ -182,3 +182,15 @@ func TestCompressWithGzip(t *testing.T) {
assert.Equal(t, testData, string(output))
}
func TestVersionAlreadySet(t *testing.T) {
err := SetVersion("foo")
assert.Nil(t, err)
err = SetVersion("bar")
assert.NotNil(t, err)
assert.IsType(t, VersionAlreadySetError, err)
assert.Equal(t, "foo", Version())
}