diff --git a/internal/command/command.go b/internal/command/command.go index 38718218..c71e45e2 100644 --- a/internal/command/command.go +++ b/internal/command/command.go @@ -1,12 +1,15 @@ package command import ( + "fmt" + "github.com/icinga/icingadb/internal" "github.com/icinga/icingadb/pkg/config" "github.com/icinga/icingadb/pkg/icingadb" "github.com/icinga/icingadb/pkg/icingaredis" "github.com/icinga/icingadb/pkg/utils" "github.com/pkg/errors" "go.uber.org/zap" + "os" ) type Command struct { @@ -21,6 +24,11 @@ func New() *Command { utils.Fatal(err) } + if flags.Version { + fmt.Println("Icinga DB version:", internal.Version) + os.Exit(0) + } + cfg, err := config.FromYAMLFile(flags.Config) if err != nil { utils.Fatal(err) diff --git a/internal/version.go b/internal/version.go new file mode 100644 index 00000000..75177ff9 --- /dev/null +++ b/internal/version.go @@ -0,0 +1,3 @@ +package internal + +var Version = "v1.0.0-rc2-dev" diff --git a/pkg/config/config.go b/pkg/config/config.go index e5c90246..e0321c91 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -15,6 +15,8 @@ type Config struct { // Flags defines CLI flags. type Flags struct { + // Version decides whether to just print the version and exit. + Version bool `long:"version" description:"print version and exit"` // Config is the path to the config file Config string `short:"c" long:"config" description:"path to config file" required:"true" default:"./config.yml"` // Datadir is the location of the data directory