From 18dc2b9c8d3757ed111e21af05878cba9209c209 Mon Sep 17 00:00:00 2001 From: olekukonko Date: Mon, 3 Mar 2014 12:41:08 +0100 Subject: [PATCH 1/4] Initial Kill --- cmd/kill/kill.go | 15 +++++++++++++++ kill.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 cmd/kill/kill.go create mode 100644 kill.go diff --git a/cmd/kill/kill.go b/cmd/kill/kill.go new file mode 100644 index 0000000..bc004a7 --- /dev/null +++ b/cmd/kill/kill.go @@ -0,0 +1,15 @@ +package main + +import ( + "fmt" + "github.com/olekukonko/someutils" + "os" +) + +func main() { + err := someutils.Kill(os.Args) + if err != nil { + fmt.Fprintf(os.Stderr, "Error: %v\n", err) + os.Exit(1) + } +} diff --git a/kill.go b/kill.go new file mode 100644 index 0000000..927f7bd --- /dev/null +++ b/kill.go @@ -0,0 +1,50 @@ +package someutils + +import ( + "errors" + "fmt" + "github.com/laher/uggo" + "os/exec" + "strings" +) + +func init() { + Register(Util{ + "kill", + Kill}) +} + +// very basic way to kill process on windows +func Kill(call []string) error { + + flagSet := uggo.NewFlagSetDefault("kill", "", VERSION) + + err := flagSet.Parse(call[1:]) + if err != nil { + return err + } + if flagSet.ProcessHelpOrVersion() { + return nil + } + + args := flagSet.Args() + + if len(args) < 1 { + return errors.New("Missing process name") + } + + for i := 0; i < args; i++ { + name := args[i] + b, err := exec.Command("taskkill", "/f", "/im", name+"*").Output() + if err != nil { + return err + } + if len(strings.Split(string(b), "\n")) <= 0 { + fmt.Printf("Can't kill %s \n", name) + } else { + fmt.Printf("Killed %s\n", name) + } + } + + return nil +} From d6995a74b356dbf6374ad84701e728859498c0bd Mon Sep 17 00:00:00 2001 From: olekukonko Date: Mon, 3 Mar 2014 12:43:55 +0100 Subject: [PATCH 2/4] Initial Kill --- kill.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kill.go b/kill.go index 927f7bd..f960cad 100644 --- a/kill.go +++ b/kill.go @@ -33,7 +33,7 @@ func Kill(call []string) error { return errors.New("Missing process name") } - for i := 0; i < args; i++ { + for i := 0; i < len(args); i++ { name := args[i] b, err := exec.Command("taskkill", "/f", "/im", name+"*").Output() if err != nil { From 62993221a79b64632e97bd536e57131559103c54 Mon Sep 17 00:00:00 2001 From: olekukonko Date: Mon, 3 Mar 2014 12:52:14 +0100 Subject: [PATCH 3/4] Initial Timer --- cmd/timer/timer.go | 15 +++++++++++++ kill.go | 8 +++---- timer.go | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 cmd/timer/timer.go create mode 100644 timer.go diff --git a/cmd/timer/timer.go b/cmd/timer/timer.go new file mode 100644 index 0000000..ab6ccf7 --- /dev/null +++ b/cmd/timer/timer.go @@ -0,0 +1,15 @@ +package main + +import ( + "fmt" + "github.com/olekukonko/someutils" + "os" +) + +func main() { + err := someutils.Timer(os.Args) + if err != nil { + fmt.Fprintf(os.Stderr, "Error: %v\n", err) + os.Exit(1) + } +} diff --git a/kill.go b/kill.go index f960cad..a8e0374 100644 --- a/kill.go +++ b/kill.go @@ -10,8 +10,8 @@ import ( func init() { Register(Util{ - "kill", - Kill}) + "kill", + Kill}) } // very basic way to kill process on windows @@ -40,9 +40,9 @@ func Kill(call []string) error { return err } if len(strings.Split(string(b), "\n")) <= 0 { - fmt.Printf("Can't kill %s \n", name) + fmt.Printf(" - %s still runing \n", name) } else { - fmt.Printf("Killed %s\n", name) + fmt.Printf(" - %s killed \n", name) } } diff --git a/timer.go b/timer.go new file mode 100644 index 0000000..8c774a5 --- /dev/null +++ b/timer.go @@ -0,0 +1,55 @@ +package someutils + +import ( + "errors" + "fmt" + "github.com/laher/uggo" + "log" + "os" + "os/exec" + "time" +) + +func init() { + Register(Util{ + "timer", + Timer}) +} + +// very basic way to kill process on windows +func Timer(call []string) error { + var cmd *exec.Cmd + start := time.Now() + fmt.Println() + flagSet := uggo.NewFlagSetDefault("timer", "", VERSION) + + err := flagSet.Parse(call[1:]) + if err != nil { + return err + } + if flagSet.ProcessHelpOrVersion() { + return nil + } + + args := flagSet.Args() + + if len(args) < 1 { + return errors.New("Missing process name") + } + + os.Args[0] = "/C" + cmd = exec.Command("cmd", os.Args...) + cmd.Stdin = os.Stdin + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + err := cmd.Run() + if err != nil { + log.Fatal("#error: ", err) + } + + fmt.Println() + fmt.Println("Time: ", time.Since(start)) + fmt.Println() + return nil +} From 8d2a72195ed5b0f1f289399c3c91fcf5e943c9aa Mon Sep 17 00:00:00 2001 From: olekukonko Date: Mon, 3 Mar 2014 13:09:19 +0100 Subject: [PATCH 4/4] Minor fix --- timer.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/timer.go b/timer.go index 8c774a5..3cba1d7 100644 --- a/timer.go +++ b/timer.go @@ -4,7 +4,6 @@ import ( "errors" "fmt" "github.com/laher/uggo" - "log" "os" "os/exec" "time" @@ -12,11 +11,11 @@ import ( func init() { Register(Util{ - "timer", - Timer}) + "timer", + Timer}) } -// very basic way to kill process on windows +// very basic way to Time execution on windows func Timer(call []string) error { var cmd *exec.Cmd start := time.Now() @@ -43,9 +42,9 @@ func Timer(call []string) error { cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr - err := cmd.Run() + err = cmd.Run() if err != nil { - log.Fatal("#error: ", err) + return err } fmt.Println()