Package: watchgha
This package provides one command,watch_gha_runs.  It displays the status
of the latest GitHub Action runs on your current branch.  If any of the runs
are in progress, it will refresh the display repeatedly with the latest status.If you like, the name can be pronounced, “Watching? Ha!”InstallationI suggest installing withpipx:$pipxinstallwatchghaNow you have a commandwatch_gha_runsavailable.  It will check all GitHub
remotes for the current directory’s repo, and find action runs for the current
branch.For complex defaulting, you can use agit alias.  For example, this provides
similar defaults, but can be adapted:[alias]runs="!f() {\watch_gha_runs $@\\"$(git remote get-url origin)\"\\"$(git rev-parse --abbrev-ref HEAD)\";\}; f"Nowgit runswill show a live display of the current runs on your branch.You can authenticate against GitHub if needed using either an entry in your
.netrc file, or by setting theGITHUB_TOKENenvironment variable.Usage$ watch_gha_runs --help
Usage: watch_gha_runs [OPTIONS] [REPO] [BRANCH]

  Watch GitHub Action runs.

  Repeatedly gets the latest status and redraws the screen, until all
  of the jobs are complete.

  REPO is a local directory or GitHub URL, defaulting to ".".

  BRANCH is defaulted from the git repo.

Options:
  --sha TEXT        The commit SHA to use. Must be a full SHA.
  --poll INTEGER    How many seconds between refreshes.  [default: 15]
  --wait-for-start  Wait for jobs to start.
  --only TEXT       Words to limit the workflows shown. Only workflows
                    with these comma separated case insensitive
                    substrings in their names will be shown.
  --help            Show this message and exit.DisplayThe output shows runs and jobs.  The current step of each job is shown, with a
row of bullets indicating the number of steps, and which is current:fix: recent pypy3.9 now omits lines after jumps nedbat/fix-pypy-nightly    53923268e8f9  @08:32am
⏲ queued       Tests             view 4397455341
    3.7 on ubuntu                  ↻ •••••••• Run tox for 3.7
    3.8 on ubuntu                  ↻ •••••••• Run tox for 3.8
    3.9 on ubuntu                  ↻ •••••••• Run tox for 3.9
    3.10 on ubuntu                 ↻ •••••••• Run tox for 3.10
    3.11 on ubuntu                 ↻ •••••••• Run tox for 3.11
    pypy-3.7 on ubuntu             ↻ •••••••• Run tox for pypy-3.7
    pypy-3.9 on ubuntu             ↻ •••••••• Run tox for pypy-3.9
    3.7 on macos                   ↻ •••••••• Run tox for 3.7
    3.8 on macos                   ↻ •••••••• Run tox for 3.8
    3.9 on macos                   ⏲ queued
    3.10 on macos                  ↻ •••••••• Run tox for 3.10
    3.11 on macos                  ↻ •••••••• Run tox for 3.11
    pypy-3.7 on macos              ⏲ queued
    pypy-3.9 on macos              ⏲ queued
    3.7 on windows                 ⏲ queued
    3.8 on windows                 ⏲ queued
    3.9 on windows                 ⏲ queued
    3.10 on windows                ↻ ••••••• Check out the repo
    3.11 on windows                ⏲ queued
    pypy-3.7 on windows            ⏲ queued
↻ in_progress  Quality            view 4397455342
    Check types                    ✓ success
    Build docs                     ↻ ••••••• Tox doc
    Pylint etc                     ↻ ••••••• Tox lint
↻ in_progress  Python Nightly Tests   view 4397455346
    Python 3.10-dev                ↻ •••◦•••• Run tox
    Python 3.11-dev                ↻ •••◦•••• Run tox
    Python 3.12-dev                ↻ •••◦•••• Run tox
    Python pypy-3.7-nightly        ↻ ••◦•••••• Run tox
    Python pypy-3.8-nightly        ↻ ••◦•••••• Run tox
    Python pypy-3.9-nightly        ↻ ••◦•••••• Run toxJobs and runs are collapsed once all of their children are successful:fix: recent pypy3.9 now omits lines after jumps nedbat/fix-pypy-nightly    53923268e8f9  @08:32am
✓ success      Tests              view 4397455341
↻ in_progress  Quality            view 4397455342
    Check types                    ✓ success
    Build docs                     ↻ ••••••• Tox doc
    Pylint etc                     ✓ success
✗ failure      Python Nightly Tests   view 4397455346
    Python 3.10-dev                ✓ success
    Python 3.11-dev                ✓ success
    Python 3.12-dev                ✓ success
    Python pypy-3.7-nightly        ✓ success
    Python pypy-3.8-nightly        ✓ success
    Python pypy-3.9-nightly        ✗ failure Run toxOnce all the runs are completed, the command ends, displaying the final
status:fix: recent pypy3.9 now omits lines after jumps nedbat/fix-pypy-nightly [push]   53923268e8f9  @08:32am
✓ success      Tests              view 4397455341
✓ success      Quality            view 4397455342
✗ failure      Python Nightly Tests   view 4397455346
    Python 3.10-dev                ✓ success
    Python 3.11-dev                ✓ success
    Python 3.12-dev                ✓ success
    Python pypy-3.7-nightly        ✓ success
    Python pypy-3.8-nightly        ✓ success
    Python pypy-3.9-nightly        ✗ failure Run toxChangelog2.2.2 – 2024-02-03Fix: steps can be in a “pending” state, and are now displayed with a dot
instead of “pending”.2.2.1 – 2024-01-14Fix: don’t fail if a .netrc file can’t be found. Fixesissue 18.Fix: in the odd case of duplicate remotes, don’t list workflow runs twice.
Fixesissue 19.2.2.0 — 2024-01-11Now all GitHub remotes are checked for jobs.  Previously, only one was
checked, so you wouldn’t see jobs running on an upstream fork.Added option--onlyto limit which workflows are displayed as requested
inissue 17.The output is now redrawn immediately when the terminal window is resized (on
Mac or Linux).  Thanks,Bill Mill.2.1.1 — 2023-07-05Implicit .netrc authentication stopped working, but has been fixed. Thanks,Rob Weir.2.0.0 — 2023-07-02The default polling interval is now 15 seconds.Now the GitHub repo location and branch name are defaulted from the current
git repo.  The repo location can be a local directory or GitHub URL. Closesissue 7.A new option,--wait-for-startwill make watch_gha_runs wait until jobs
are in progress.  This fixes a problem with using watch_gha_runs
programmatically: it can check the run status before any new runs have
started, and simply report the done state of the last bunch of runs, then
quit.Fix: if a .yml workflow file couldn’t be parsed, its “run” would persist in
the list of runs for longer than it should.  Now those unparsable runs aren’t
displayed at all.Fix: skipped runs are considered finished, and don’t need their jobs shown.Error reporting is improved, removing unneeded noisy tracebacks in some
cases, and providing more information for GitHub API errors.
Closesissue 8.More operations are retried on failure, fixingissue 10.Interrupting with ctrl-C will set the exit status to 2.1.0.0 — 2023-04-15The--polloption sets the number of seconds to wait between refreshes.Requests to GitHub are now made asynchronously, speeding execution.Redirections from GitHub (for example, if a repo is renamed or moved) are
followed transparently.The exit code is now 1 if any runs failed, 0 if all were successful.Long lines are no longer wrapped too short.0.6.0 — 2023-03-22Runs can be selected by a commit SHA by using--shaon the command line.Retry if GitHub returns “502 - Bad Gateway”.0.5.0 — 2023-03-15Uses aGITHUB_TOKENenvironment variable for authentication if it is
defined.0.0.2 — 2023-03-14Support more forms of repo URLs:git@github.com:, without.git, etc.Better error messages if the repo URL can’t be parsed.0.0.1 — 2023-03-13First versionDevelopmentThe code is a bit messy and undocumented, and there are no tests.  If you want
to change the code, open an issue and let’s talk about it.Contributors:Ned BatchelderBill MillHugo van KemenadeRob WeirBack StoryThis started as a formatter for the output ofgh run listfrom thegh
run command.  Then I triedgh run watch, but wasn’t happy with its
choices. So I wrote my own.