From 8f4ae1a639884f0e03e3d6d9a99cf5528d80cd63 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Fri, 23 Feb 2024 07:02:31 -0600 Subject: [PATCH] common cmd line handling routines --- configfile.go | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/configfile.go b/configfile.go index a339d70..931f232 100644 --- a/configfile.go +++ b/configfile.go @@ -34,3 +34,87 @@ func parsecfg(f string) []string { lines := strings.Split(out, "\n") return lines } + +func (rl *RepoList) ArgCheckoutUser() bool { + log.Info("running git checkout devel everwhere") + var failed int = 0 + for _, repo := range rl.AllRepos() { + if repo.Status.ReadOnly() { + // log.Info("skipping read-only", repo.Name()) + continue + } + if repo.Status.CheckDirty() { + log.Info("skipping dirty repo", repo.Name()) + continue + } + branch := repo.Status.GetUserBranchName() + if branch == repo.Status.GetCurrentBranchName() { + // already on user branch + continue + } + cmd := []string{"git", "checkout", branch} + log.Info("Running:", cmd, "in", repo.Name()) + err, output := repo.RunCmd(cmd) + if err == nil { + log.Info("git checkout worked", output) + } else { + failed += 1 + log.Info("git checkout failed") + log.Info("Something went wrong. Got err", err) + log.Info("output =", output) + // return false + } + } + log.Info("Ran git checkout in all repos. failure count =", failed) + return true +} + +func (rl *RepoList) ArgGitPull() bool { + log.Info("running git pull everywhere") + cmd := []string{"git", "pull"} + var failed int = 0 + for _, repo := range rl.AllRepos() { + log.Info("Running:", repo.Status.Path(), cmd) + err, output := repo.RunCmd(cmd) + if err == nil { + log.Info(output) + } else { + failed += 1 + log.Info("Something went wrong. Got err", err) + log.Info("output =", output) + return false + } + } + log.Info("Ran git pull in all repos. failure count =", failed) + return true +} + +func (rl *RepoList) ArgCheckoutDevel() bool { + log.Info("running git checkout devel everwhere") + var failed int = 0 + for _, repo := range rl.AllRepos() { + if repo.Status.ReadOnly() { + // log.Info("skipping read-only", repo.Name()) + continue + } + if repo.CheckDirty() { + log.Info("skipping dirty repo", repo.Name()) + continue + } + branch := repo.Status.GetDevelBranchName() + cmd := []string{"git", "checkout", branch} + log.Info("Running:", cmd, "in", repo.Name()) + err, output := repo.RunCmd(cmd) + if err == nil { + log.Info("git checkout worked", output) + } else { + failed += 1 + log.Info("git checkout failed") + log.Info("Something went wrong. Got err", err) + log.Info("output =", output) + // return false + } + } + log.Info("Ran git checkout in all repos. failure count =", failed) + return true +}