// Copyright 2017-2025 WIT.COM Inc. All rights reserved. // Use of this source code is governed by the GPL 3.0 package main /* this parses the command line arguements this enables command line options from other packages like 'gui' and 'log' */ import ( "os" "go.wit.com/lib/debugger" "go.wit.com/lib/gui/logsettings" "go.wit.com/lib/gui/prep" "go.wit.com/log" ) var argv args type args struct { Git *GitCmd `arg:"subcommand:git" help:"git stuff"` TestBuild *DefaultCmd `arg:"subcommand:build" help:"try appropriate 'go build'"` Debian *DebianCmd `arg:"subcommand:debian" help:"build missing .deb packages"` MacBuild *EmptyCmd `arg:"subcommand:macos" help:"build macos packages"` MakeInstall *DefaultCmd `arg:"subcommand:install" help:"run make install in each repo"` ListPkgs *EmptyCmd `arg:"subcommand:list" help:"list all the packages on mirrors.wit.com"` Test *EmptyCmd `arg:"subcommand:test" help:"test build everything first"` Clone *EmptyCmd `arg:"subcommand:repomap-clone" help:"go-clone from a gowebd repomap"` Rdate *EmptyCmd `arg:"subcommand:rdate" help:"standard rdate"` Upgrade *UpgradeCmd `arg:"subcommand:upgrade" help:"apt upgrade packages installed from mirrors.wit.com"` RepoMap string `arg:"--repomap" help:"location of the repomap"` Release bool `arg:"--release" help:"use go-deb --release"` DryRun bool `arg:"--dry-run" help:"only show what would be packaged"` Install bool `arg:"--install" help:"go install the binaries first"` Verbose bool `arg:"--verbose" help:"be loud about it"` Force bool `arg:"--force" help:"rebuild everything"` Recursive bool `arg:"--recursive" help:"go-clone --recursive"` WITCOM bool `arg:"--witcom" help:"add the GPL header"` Max int32 `arg:"--max" help:"stop building after max builds"` } type DebianCmd struct { DryRun bool `arg:"--dry-run" help:"only show what would be packaged"` Verbose bool `arg:"--verbose" help:"be loud about it"` Force bool `arg:"--force" help:"rebuild everything"` SkipInstall bool `arg:"--skip-install" help:"rebuild everything"` } type UpgradeCmd struct { DryRun bool `arg:"--dry-run" help:"don't really do anything"` Force bool `arg:"--force" help:"force un-install and re-install each package"` } type DefaultCmd struct { DryRun bool `arg:"--dry-run" help:"only show what would be packaged"` Verbose bool `arg:"--verbose" help:"be loud about it"` Force bool `arg:"--force" help:"rebuild everything"` } type GitCmd struct { Log *EmptyCmd `arg:"subcommand:log" help:"git log"` Who *EmptyCmd `arg:"subcommand:who" help:"git who"` Pull *EmptyCmd `arg:"subcommand:pull" help:"pull the wit standard paths"` Push *EmptyCmd `arg:"subcommand:push" help:"push the wit standard paths"` } type EmptyCmd struct { } func init() { if debugger.ArgDebug() { log.Info("cmd line --debugger == true") go func() { log.Sleep(2) debugger.DebugWindow() }() } if debugger.ArgLogger() { log.Info("cmd line --loggger == true") go func() { log.Sleep(4) logsettings.LogWindow() logsettings.LogWindow() }() } } func (args) Buildtime() (string, string) { return BUILDTIME, VERSION } func (args) Version() string { return "wit-test " + VERSION + " Built on " + BUILDTIME } /* handles shell autocomplete */ func (args) Appname() string { return ARGNAME } func (a args) DoAutoComplete(pb *prep.Auto) { if pb.Cmd == "" { pb.Autocomplete3([]string{"--verbose", "--force", "push", "build", "debian", "upgrade", "macos", "git", "rdate"}) } else { pb.SubCommand(pb.Goargs...) } os.Exit(0) }