From 3f578882a651f74d4e701d8682e6c76752da76b5 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Sat, 5 Apr 2025 13:45:16 -0700 Subject: Refactor into reusable libraries --- cmd/progress-bar/progress-bar.go | 53 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 cmd/progress-bar/progress-bar.go (limited to 'cmd') diff --git a/cmd/progress-bar/progress-bar.go b/cmd/progress-bar/progress-bar.go new file mode 100644 index 0000000..65079ef --- /dev/null +++ b/cmd/progress-bar/progress-bar.go @@ -0,0 +1,53 @@ +package main + +import ( + "bytes" + "errors" + "flag" + "fmt" + "os" + "os/exec" + "strconv" + "time" + + "gitlab.com/rhogenson/progress-bar/progress" +) + +var n = flag.Duration("n", 2*time.Minute, "polling interval") + +func run() error { + args := flag.Args() + if len(args) < 2 { + return errors.New("usage error") + } + maxStr := args[0] + maxVal, err := strconv.Atoi(maxStr) + if err != nil { + return fmt.Errorf("max: %s", err) + } + cmd := args[1:] + bar := progress.New(maxVal) + for i := 0; ; i++ { + outputBytes, err := exec.Command(cmd[0], cmd[1:]...).Output() + if err != nil { + fmt.Println(err) + continue + } + output, err := strconv.Atoi(string(bytes.TrimSuffix(outputBytes, []byte("\n")))) + if err != nil { + fmt.Println(err) + continue + } + bar.Set(output) + bar.Print() + time.Sleep(*n) + } +} + +func main() { + flag.Parse() + if err := run(); err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } +} -- cgit v1.3.1