change foo output
This commit is contained in:
+63
-13
@@ -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"
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user