change foo output

This commit is contained in:
grambbledook
2025-12-11 19:09:47 +01:00
parent c87df1304f
commit 97aeb6be2e
+63 -13
View File
@@ -5,35 +5,39 @@ import (
"log" "log"
"os" "os"
"os/exec" "os/exec"
"strings"
"time" "time"
) )
var (
Asm = "asm"
Compile = "compile"
Link = "link"
)
func main() { func main() {
if len(os.Args) < 2 { if len(os.Args) < 2 {
fmt.Fprintln(os.Stderr, "Usage: toolexec <tool> [args...]") fmt.Fprintln(os.Stderr, "Usage: toolexec <tool> [args...]")
os.Exit(1) os.Exit(1)
} }
tool := os.Args[1]
args := os.Args[2:]
start := time.Now() start := time.Now()
cmd := exec.Command(tool, args...) cmd := exec.Command(os.Args[1], os.Args[2:]...)
cmd.Stdout = os.Stdout cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr cmd.Stderr = os.Stderr
err := cmd.Run() err := cmd.Run()
elapsed := time.Since(start) elapsed := time.Since(start)
log.Println("======================")
log.Printf("%v", args) switch getTool(os.Args[1]) {
log.Println("") case Asm:
log.Printf(" tool: %s", tool) printAsm(elapsed)
log.Printf(" package: %s", args[len(args)-1]) case Compile:
log.Printf(" args: %v", args) printCompile(elapsed)
log.Printf(" elapsed: %s", elapsed) case Link:
log.Println("======================") printLink(elapsed)
log.Println("") }
if err != nil { if err != nil {
if exitErr, ok := err.(*exec.ExitError); ok { if exitErr, ok := err.(*exec.ExitError); ok {
@@ -44,3 +48,49 @@ func main() {
} }
} }
} }
func printAsm(elapsed interface{}) {
log.Println("==========Asm=========")
log.Printf(" tool: %s", Asm)
log.Printf(" package: %s", os.Args[len(os.Args)-1])
log.Printf(" elapsed: %s", elapsed)
log.Println("======================")
log.Println("")
}
func printCompile(elapsed interface{}) {
log.Println("========Compile=======")
log.Printf(" tool: %s", Compile)
log.Printf(" package: %s", getPackage(os.Args))
log.Printf(" elapsed: %s", elapsed)
log.Println("======================")
log.Println("")
}
func printLink(elapsed interface{}) {
log.Println("========LINK========")
log.Printf(" tool: %s", Link)
log.Printf(" package: %s", os.Args[len(os.Args)-1])
log.Printf(" elapsed: %s", elapsed)
log.Println("======================")
log.Println("")
}
func getTool(tool string) string {
parts := strings.Split(tool, "/")
return parts[len(parts)-1]
}
func getPackage(args []string) string {
for i, v := range args {
if i+1 == len(args) {
break
}
if v == "-p" {
return args[i+1]
}
}
return "unknown"
}