diff --git a/cmd/pgcli/admin/admin.go b/cmd/pgcli/admin/admin.go index 6d9ec09..d9144c0 100644 --- a/cmd/pgcli/admin/admin.go +++ b/cmd/pgcli/admin/admin.go @@ -27,7 +27,7 @@ func Run() error { func parseSecretKeyAndServer(flagSet *flag.FlagSet, args []string) (secretKey string, server string, err error) { flagSet.StringVar(&secretKey, "secret-key", "", "key to generate network secret") - flagSet.StringVar(&secretKey, "server", "", "peermap server url") + flagSet.StringVar(&secretKey, "s", "", "peermap server url") flagSet.Parse(args) if secretKey == "" { diff --git a/cmd/pgcli/download/download.go b/cmd/pgcli/download/download.go index 4a03638..f73d048 100644 --- a/cmd/pgcli/download/download.go +++ b/cmd/pgcli/download/download.go @@ -27,7 +27,7 @@ func Run() error { } downloader := fileshare.Downloader{ListenUDPPort: 28879} - flagSet.StringVar(&downloader.Server, "server", "", "peermap server") + flagSet.StringVar(&downloader.Server, "s", "", "peermap server") flagSet.StringVar(&downloader.Network, "pubnet", "public", "peermap public network") var logLevel int diff --git a/cmd/pgcli/main.go b/cmd/pgcli/main.go index 14243ea..7e9c25a 100644 --- a/cmd/pgcli/main.go +++ b/cmd/pgcli/main.go @@ -5,6 +5,7 @@ import ( "fmt" "log/slog" "os" + "runtime/debug" "github.com/sigcn/pg/cmd/pgcli/admin" "github.com/sigcn/pg/cmd/pgcli/curve25519" @@ -21,6 +22,7 @@ func main() { var logLevel int flag.Usage = usage flag.IntVar(&logLevel, "loglevel", 0, "log level") + flag.BoolFunc("v", "print binary version", printVersion) flag.Parse() slog.SetLogLoggerLevel(slog.Level(logLevel)) if err := run(); err != nil { @@ -40,7 +42,12 @@ func run() error { case "share": return share.Run() case "vpn": - vpn.Version = Version + commit, _, _ := readBinaryInfo() + if len(commit) < 7 { + vpn.Version = Version + } else { + vpn.Version = fmt.Sprintf("%s-%s", Version, commit[:7]) + } return vpn.Run() default: usage() @@ -58,6 +65,32 @@ func usage() { fmt.Printf(" share\t\tShare files to peers\n") fmt.Printf(" vpn\t\tRun a vpn daemon which backend is PeerGuard p2p network\n\n") fmt.Printf("Flags:\n") - fmt.Printf(" --loglevel\n\tlog level\n") fmt.Printf(" -v, --version\n\tprint binary version\n") } + +func readBinaryInfo() (commit, buildTime, goVersion string) { + info, ok := debug.ReadBuildInfo() + goVersion = info.GoVersion + if ok { + for _, kv := range info.Settings { + if kv.Key == "vcs.revision" { + commit = kv.Value + continue + } + if kv.Key == "vcs.time" { + buildTime = kv.Value + } + } + } + return +} + +func printVersion(string) error { + commit, buildTime, goVersion := readBinaryInfo() + fmt.Println(goVersion) + fmt.Printf("version\t\t%s\n", Version) + fmt.Printf("build_time\t%s\n", buildTime) + fmt.Printf("commit\t\t%s\n", commit) + os.Exit(0) + return nil +} diff --git a/cmd/pgcli/share/share.go b/cmd/pgcli/share/share.go index d1e47c5..f5844bc 100644 --- a/cmd/pgcli/share/share.go +++ b/cmd/pgcli/share/share.go @@ -24,7 +24,7 @@ func Run() error { } fileManager := fileshare.FileManager{ListenUDPPort: 28878, ProgressBar: createBar} - flagSet.StringVar(&fileManager.Server, "server", "", "peermap server") + flagSet.StringVar(&fileManager.Server, "s", "", "peermap server") flagSet.StringVar(&fileManager.Network, "pubnet", "public", "peermap public network") flagSet.StringVar(&fileManager.PrivateKey, "key", "", "curve25519 private key in base58 format (default generate a new one)") diff --git a/cmd/pgcli/vpn/vpn.go b/cmd/pgcli/vpn/vpn.go index c941955..192ebc5 100644 --- a/cmd/pgcli/vpn/vpn.go +++ b/cmd/pgcli/vpn/vpn.go @@ -52,6 +52,7 @@ func Run() error { var logLevel int flagSet.BoolVar(&pprof, "pprof", false, "enable http pprof server") flagSet.IntVar(&logLevel, "loglevel", 0, "log level") + flagSet.IntVar(&logLevel, "V", 0, "") cfg, err := createConfig(flagSet, flag.Args()[1:]) if err != nil { return err