add VersionFlag to CLI struct

upd VersionCmd struct
This commit is contained in:
onyx-and-iris 2025-06-02 18:11:37 +01:00
parent 666b4cf744
commit 95ebb2afb6
2 changed files with 40 additions and 19 deletions

View File

@ -30,8 +30,9 @@ type CLI struct {
ObsConfig `embed:"" help:"OBS WebSocket configuration."`
Man mangokong.ManFlag `help:"Print man page."`
Version VersionFlag `help:"Print gobs-cli version information and quit" name:"version" short:"v"`
Version VersionCmd `help:"Show version." cmd:"" aliases:"v"`
ObsVersion ObsVersionCmd `help:"Print OBS client and websocket version." cmd:"" aliases:"v"`
Scene SceneCmd `help:"Manage scenes." cmd:"" aliases:"sc"`
Sceneitem SceneItemCmd `help:"Manage scene items." cmd:"" aliases:"si"`
Group GroupCmd `help:"Manage groups." cmd:"" aliases:"g"`

View File

@ -2,13 +2,33 @@ package main
import (
"fmt"
"github.com/alecthomas/kong"
)
// VersionCmd handles the version command.
type VersionCmd struct{} // size = 0x0
var version = "unknown"
// VersionFlag is a custom flag type for displaying version information.
type VersionFlag string
// Decode implements the kong.Flag interface for VersionFlag.
func (v VersionFlag) Decode(_ *kong.DecodeContext) error { return nil }
// IsBool implements the kong.Flag interface for VersionFlag.
func (v VersionFlag) IsBool() bool { return true }
// BeforeApply implements the kong.Flag interface for VersionFlag.
func (v VersionFlag) BeforeApply(app *kong.Kong, _ kong.Vars) error {
fmt.Println(version)
app.Exit(0) // Exit the application after printing the version
return nil
}
// ObsVersionCmd handles the version command.
type ObsVersionCmd struct{} // size = 0x0
// Run executes the command to get the OBS client version.
func (cmd *VersionCmd) Run(ctx *context) error {
func (cmd *ObsVersionCmd) Run(ctx *context) error {
version, err := ctx.Client.General.GetVersion()
if err != nil {
return err