func Mousetrap(app *cli.App) { oldBefore := app.Before app.Before = func(c *cli.Context) error { if mousetrap.StartedByExplorer() { cmd := exec.Command(os.Args[0], os.Args[1:]...) cmd.Env = append(os.Environ(), "MOUSETRAP=1") cmd.Stdin = os.Stdin cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr cmd.Run() cmd = exec.Command("cmd.exe", "/K") cmd.Env = os.Environ() cmd.Stdin = os.Stdin cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr err := cmd.Run() if err != nil { fmt.Println("Failed to execute sub-process. Error:", err) os.Exit(1) } os.Exit(0) } if oldBefore == nil { return nil } return oldBefore(c) } }