97 lines
1.6 KiB
Go
97 lines
1.6 KiB
Go
// Copyright 2017-2025 WIT.COM Inc. All rights reserved.
|
|
// Use of this source code is governed by the GPL 3.0
|
|
|
|
package main
|
|
|
|
import (
|
|
"debug/buildinfo"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"unicode"
|
|
|
|
"go.wit.com/dev/alexflint/arg"
|
|
"go.wit.com/log"
|
|
)
|
|
|
|
// sent via -ldflags
|
|
var VERSION string
|
|
var BUILDTIME string
|
|
|
|
func main() {
|
|
me = new(autoType)
|
|
me.argpp = arg.MustParse(&argv)
|
|
|
|
if argv.Bash {
|
|
argv.doBash()
|
|
os.Exit(0)
|
|
}
|
|
if len(argv.BashAuto) != 0 {
|
|
argv.doBashAuto()
|
|
os.Exit(0)
|
|
}
|
|
|
|
if argv.Drives != nil {
|
|
doDrives()
|
|
doDrives2()
|
|
}
|
|
|
|
listenForBlockEvents()
|
|
okExit("everything compiled")
|
|
}
|
|
|
|
func doFixup() {
|
|
okExit("list drives")
|
|
}
|
|
|
|
// this is dumb. sync this with go-deb
|
|
func trimNonNumericFromStart(s string) string {
|
|
for i, r := range s {
|
|
if unicode.IsDigit(r) {
|
|
return s[i:]
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func okExit(thing string) {
|
|
if thing != "" {
|
|
log.Info(thing, "ok")
|
|
}
|
|
// log.Info("Finished go-clean on", check.GetGoPath(), "ok")
|
|
os.Exit(0)
|
|
}
|
|
|
|
func badExit(err error) {
|
|
log.Info("go-clean failed: ", err)
|
|
os.Exit(-1)
|
|
}
|
|
|
|
func dumpDebug() {
|
|
// Get absolute path of the currently running binary
|
|
exePath, err := os.Executable()
|
|
if err != nil {
|
|
fmt.Println("Error getting executable path:", err)
|
|
return
|
|
}
|
|
|
|
// Resolve symlinks if necessary
|
|
exePath, err = filepath.EvalSymlinks(exePath)
|
|
if err != nil {
|
|
fmt.Println("Error resolving symlink:", err)
|
|
return
|
|
}
|
|
|
|
// Read build info
|
|
bi, err := buildinfo.ReadFile(exePath)
|
|
if err != nil {
|
|
fmt.Println("Error reading build info:", err)
|
|
return
|
|
}
|
|
|
|
fmt.Println("Go Version:", bi.GoVersion)
|
|
for _, dep := range bi.Deps {
|
|
fmt.Printf("Dependency: %s %s\n", dep.Path, dep.Version)
|
|
}
|
|
}
|