diff --git a/changelog.md b/changelog.md index 9b6afd8..17e0a8c 100644 --- a/changelog.md +++ b/changelog.md @@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Version flag for client and server binaries +- Description in help output of client and server binaries + ### Changed ### Deprecated diff --git a/client/main.go b/client/main.go index f25ac5f..b8fe61a 100644 --- a/client/main.go +++ b/client/main.go @@ -73,6 +73,13 @@ type args struct { Password *string `arg:"-p" help:"password, if required"` } +func (a *args) Version() string { + return "v0.1.2" +} +func (a *args) Description() string { + return "Go, chat!\nA basic irc-style chat client, written in Go using bubbletea and websockets" +} + func main() { ctx := context.Background() diff --git a/server/main.go b/server/main.go index 1d1a9f9..5cc4ec8 100644 --- a/server/main.go +++ b/server/main.go @@ -41,15 +41,25 @@ type server struct { nickm map[string]string } +type args struct { + Admin string `arg:"-a" default:"8bit" help:"admin user nick, allows access to /sudo" placeholder:"NICK"` + HistLen uint `arg:"-l" default:"10" help:"set message history size" placeholder:"N"` + Port uint `arg:"positional" default:"0" help:"port to listen on, random available port if not set"` + NickMap *string `arg:"-n" help:"path to nick:pass JSON file" placeholder:"FILE"` +} + +func (a *args) Version() string { + return "v0.1.2" +} + +func (a *args) Description() string { + return "Go, chat! Server\nA basic irc-style chat server, written in Go using websockets" +} + func main() { log := log.New(os.Stderr, "ws server 🚀 ", log.LstdFlags|log.Lshortfile|log.Lmsgprefix) - var args struct { - Admin string `arg:"-a" default:"8bit" help:"admin user nick, allows access to /sudo" placeholder:"NICK"` - HistLen uint `arg:"-l" default:"10" help:"set message history size" placeholder:"N"` - Port uint `arg:"positional" default:"0" help:"port to listen on, random available port if not set"` - NickMap *string `arg:"-n" help:"path to nick:pass JSON file" placeholder:"FILE"` - } + var args args arg.MustParse(&args) nickMap, err := loadNickMap(args.NickMap)