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/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 new file mode 100644 index 0000000..a8e0374 --- /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 < len(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(" - %s still runing \n", name) + } else { + fmt.Printf(" - %s killed \n", name) + } + } + + return nil +} diff --git a/timer.go b/timer.go new file mode 100644 index 0000000..3cba1d7 --- /dev/null +++ b/timer.go @@ -0,0 +1,54 @@ +package someutils + +import ( + "errors" + "fmt" + "github.com/laher/uggo" + "os" + "os/exec" + "time" +) + +func init() { + Register(Util{ + "timer", + Timer}) +} + +// very basic way to Time execution 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 { + return err + } + + fmt.Println() + fmt.Println("Time: ", time.Since(start)) + fmt.Println() + return nil +}