zrepl/scratchpad/repeat/main.go

47 lines
679 B
Go
Raw Normal View History

package main
import (
"log"
"os"
"os/exec"
"time"
)
var config struct {
duration time.Duration
}
func usage() {
log.Printf("usage: repeat repeatInterval command [args...]")
}
func main() {
args := os.Args
if len(args) < 3 {
usage()
os.Exit(1)
}
repeatInterval, err := time.ParseDuration(args[1])
if err != nil {
log.Printf("cannot parse interval: %s", err)
usage()
os.Exit(1)
}
var lastStart time.Time
for {
cmd := exec.Command(args[2], args[3:]...)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
lastStart = time.Now()
if err := cmd.Run(); err != nil {
panic(err)
}
time.Sleep(lastStart.Add(repeatInterval).Sub(time.Now()))
}
}