Add version flag

This commit is contained in:
2025-11-20 15:32:59 +01:00
parent 1eda2fcc82
commit 610ba20276

53
main.go
View File

@@ -3,10 +3,12 @@ package main
import (
"bufio"
"flag"
"fmt"
"io"
"log"
"os"
"path/filepath"
"runtime/debug"
"sync/atomic"
utils "git.site.quack-lab.dev/dave/cyutils"
@@ -20,18 +22,27 @@ const ImportantColor = BRed
const DefaultColor = Reset
const PathColor = Green
var programName = os.Args[0]
var undo = false
var (
programName = os.Args[0]
undo = false
version = "dev"
)
func main() {
recurse := flag.String("r", "", "recurse into directories")
file := flag.String("f", "", "file to read instructions from")
debug := flag.Bool("d", false, "debug")
undoF := flag.Bool("u", false, "undo")
versionFlag := flag.Bool("v", false, "print version and exit")
dryRun := flag.Bool("n", false, "dry run (no filesystem changes)")
flag.Parse()
undo = *undoF
if *versionFlag {
fmt.Println(getVersionString())
return
}
setupLogging(*debug)
if *dryRun {
@@ -248,6 +259,44 @@ func ReadFromFilesRecursively(input string, output chan *LinkInstruction, status
}
}
func getVersionString() string {
if version != "" && version != "dev" {
return version
}
if info, ok := debug.ReadBuildInfo(); ok {
if info.Main.Version != "" && info.Main.Version != "(devel)" {
return info.Main.Version
}
var revision, modified, vcsTime string
for _, setting := range info.Settings {
switch setting.Key {
case "vcs.revision":
revision = setting.Value
case "vcs.modified":
modified = setting.Value
case "vcs.time":
vcsTime = setting.Value
}
}
if revision != "" {
if len(revision) > 7 {
revision = revision[:7]
}
if modified == "true" {
revision += "-dirty"
}
if vcsTime != "" {
revision += " (" + vcsTime + ")"
}
return revision
}
}
return "dev"
}
func ReadFromFile(input string, output chan *LinkInstruction, status chan error, doclose bool) {
if doclose {
defer close(output)