From 4ea2ba4c64b71e81e2ff84cf3ead509ac501be97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Miri=C4=87?= <1009277+imiric@users.noreply.github.com> Date: Thu, 11 Apr 2024 13:07:09 +0200 Subject: [PATCH] feat(cli): add version flag --- app/app.go | 2 +- app/cli/cli.go | 12 ++++++++---- app/version.go | 3 ++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/app.go b/app/app.go index 8120b2d..99a40de 100644 --- a/app/app.go +++ b/app/app.go @@ -54,7 +54,7 @@ func New(dataDir string, opts ...Option) (*App, error) { } app.ctx.UUIDGen = uuidgen - app.cli, err = cli.New(dataDir) + app.cli, err = cli.New(dataDir, app.ctx.Version) if err != nil { return nil, err } diff --git a/app/cli/cli.go b/app/cli/cli.go index 10eadc9..b6d30a0 100644 --- a/app/cli/cli.go +++ b/app/cli/cli.go @@ -25,15 +25,16 @@ type CLI struct { Invite Invite `kong:"cmd,help='Manage invitations for remote users.'"` Remote Remote `kong:"cmd,help='Manage remote Disco nodes.'"` - DataDir string `kong:"default='${dataDir}',help='Directory to store Disco data in.'"` - EncryptionKey string `kong:"help='32-byte private key used for encrypting and decrypting the local data store, encoded in base 58. '"` + Version kong.VersionFlag `kong:"help='Output Disco version and exit.'"` + DataDir string `kong:"default='${dataDir}',help='Directory to store Disco data in.'"` + EncryptionKey string `kong:"help='32-byte private key used for encrypting and decrypting the local data store, encoded in base 58. '"` Log struct { Level slog.Level `enum:"DEBUG,INFO,WARN,ERROR" default:"INFO" help:"Set the app logging level."` } `embed:"" prefix:"log-"` } // New initializes the command-line interface. -func New(dataDir string) (*CLI, error) { +func New(dataDir, version string) (*CLI, error) { c := &CLI{} kparser, err := kong.New(c, kong.Name("disco"), @@ -44,7 +45,10 @@ func New(dataDir string) (*CLI, error) { Summary: true, NoExpandSubcommands: true, }), - kong.Vars{"dataDir": dataDir}, + kong.Vars{ + "dataDir": dataDir, + "version": version, + }, ) if err != nil { return nil, err diff --git a/app/version.go b/app/version.go index 0b61d8a..4a2f82e 100644 --- a/app/version.go +++ b/app/version.go @@ -1,3 +1,4 @@ package app -const version = "0.0.0" +// The app version is extracted from Git and set by the Go linker at build time. +var version string