mirror of
https://github.com/therootcompany/golib.git
synced 2026-11-04 06:55:00 +00:00
fix(monorel): follow CLI flag conventions
This commit is contained in:
parent
e82e3979d2
commit
115e92dff9
@ -12,6 +12,7 @@ package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"errors"
|
||||
"flag"
|
||||
"fmt"
|
||||
"go/parser"
|
||||
@ -20,6 +21,7 @@ import (
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"runtime/debug"
|
||||
"slices"
|
||||
"sort"
|
||||
"strconv"
|
||||
@ -43,7 +45,26 @@ var (
|
||||
|
||||
// printVersion displays the version, commit, and build date.
|
||||
func printVersion(w io.Writer) {
|
||||
_, _ = fmt.Fprintf(w, "%s v%s %s (%s)\n", name, version, commit[:7], date)
|
||||
buildCommit, buildDate := commit, date
|
||||
if buildCommit == "0000000" {
|
||||
if info, ok := debug.ReadBuildInfo(); ok {
|
||||
for _, setting := range info.Settings {
|
||||
switch setting.Key {
|
||||
case "vcs.revision":
|
||||
if len(setting.Value) >= 7 {
|
||||
buildCommit = setting.Value[:7]
|
||||
}
|
||||
case "vcs.time":
|
||||
buildDate = setting.Value
|
||||
case "vcs.modified":
|
||||
if setting.Value == "true" {
|
||||
buildDate += "+dirty"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
_, _ = fmt.Fprintf(w, "%s v%s %s (%s)\n", name, version, buildCommit, buildDate)
|
||||
_, _ = fmt.Fprintf(w, "%s\n", desc)
|
||||
_, _ = fmt.Fprintf(w, "Copyright (C) %s %s\n", licenseYear, licenseOwner)
|
||||
_, _ = fmt.Fprintf(w, "Licensed under %s\n", licenseType)
|
||||
@ -166,6 +187,27 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
func parseSubcommandFlags(fs *flag.FlagSet, args []string) {
|
||||
if len(args) > 0 {
|
||||
switch args[0] {
|
||||
case "-V", "-version", "--version", "version":
|
||||
printVersion(os.Stdout)
|
||||
os.Exit(0)
|
||||
case "help", "-help", "--help":
|
||||
printVersion(os.Stdout)
|
||||
fmt.Fprintln(os.Stdout, "")
|
||||
fs.Usage()
|
||||
os.Exit(0)
|
||||
}
|
||||
}
|
||||
if err := fs.Parse(args); err != nil {
|
||||
if errors.Is(err, flag.ErrHelp) {
|
||||
os.Exit(0)
|
||||
}
|
||||
os.Exit(2)
|
||||
}
|
||||
}
|
||||
|
||||
func usage() {
|
||||
fmt.Fprintln(os.Stderr, "Usage:")
|
||||
fmt.Fprintln(os.Stderr, " monorel <subcommand> [options] <binary-path>...")
|
||||
@ -185,7 +227,7 @@ func usage() {
|
||||
// ── Subcommand: release ────────────────────────────────────────────────────
|
||||
|
||||
func runRelease(args []string) {
|
||||
fs := flag.NewFlagSet("monorel release", flag.ExitOnError)
|
||||
fs := flag.NewFlagSet("monorel release", flag.ContinueOnError)
|
||||
var showVersion bool
|
||||
var recursive, all, dryRun, yes, force, draft, prerelease bool
|
||||
var almostAll, ios, androidNDK bool
|
||||
@ -214,11 +256,7 @@ func runRelease(args []string) {
|
||||
fmt.Fprintln(os.Stderr, "")
|
||||
fs.PrintDefaults()
|
||||
}
|
||||
if len(args) > 0 && args[0] == "-V" {
|
||||
printVersion(os.Stdout)
|
||||
os.Exit(0)
|
||||
}
|
||||
_ = fs.Parse(args)
|
||||
parseSubcommandFlags(fs, args)
|
||||
if showVersion {
|
||||
printVersion(os.Stdout)
|
||||
os.Exit(0)
|
||||
@ -261,7 +299,7 @@ func runRelease(args []string) {
|
||||
// ── Subcommand: bump ───────────────────────────────────────────────────────
|
||||
|
||||
func runBump(args []string) {
|
||||
fs := flag.NewFlagSet("monorel bump", flag.ExitOnError)
|
||||
fs := flag.NewFlagSet("monorel bump", flag.ContinueOnError)
|
||||
var showVersion bool
|
||||
var component string
|
||||
var recursive, all, force, dryRun bool
|
||||
@ -287,11 +325,7 @@ func runBump(args []string) {
|
||||
fmt.Fprintln(os.Stderr, "")
|
||||
fs.PrintDefaults()
|
||||
}
|
||||
if len(args) > 0 && args[0] == "-V" {
|
||||
printVersion(os.Stdout)
|
||||
os.Exit(0)
|
||||
}
|
||||
_ = fs.Parse(args)
|
||||
parseSubcommandFlags(fs, args)
|
||||
if showVersion {
|
||||
printVersion(os.Stdout)
|
||||
os.Exit(0)
|
||||
@ -364,7 +398,7 @@ func runBump(args []string) {
|
||||
// ── Subcommand: init ───────────────────────────────────────────────────────
|
||||
|
||||
func runInit(args []string) {
|
||||
fs := flag.NewFlagSet("monorel init", flag.ExitOnError)
|
||||
fs := flag.NewFlagSet("monorel init", flag.ContinueOnError)
|
||||
var showVersion bool
|
||||
var recursive, all, dryRun, cmd bool
|
||||
var almostAll, ios, androidNDK bool
|
||||
@ -394,11 +428,7 @@ func runInit(args []string) {
|
||||
fmt.Fprintln(os.Stderr, "")
|
||||
fs.PrintDefaults()
|
||||
}
|
||||
if len(args) > 0 && args[0] == "-V" {
|
||||
printVersion(os.Stdout)
|
||||
os.Exit(0)
|
||||
}
|
||||
_ = fs.Parse(args)
|
||||
parseSubcommandFlags(fs, args)
|
||||
if showVersion {
|
||||
printVersion(os.Stdout)
|
||||
os.Exit(0)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user