Joseph Edmonds

Playing with the Github Client

by Joseph Edmonds

by Joseph Edmonds

I’m currently trying to migrate a load of Github issues into the new Github projects system

Unfortunately, they do not make this easy via the web interface. There is though the CLI client which seems eminently scriptable, so this is my findings as I explore this approach.

First you need to install the client and authenticate with the command gh auth login

First thing you might notice is that the gh client output is full of fancy colours. This is nice from a UI point of view, but makes scripting more difficult. We can get around it easily by piping through cat

gh search issues --state open --repo "LongTermSupport/lxc-bash" | cat

Another thing you might notice is that args are in long form with leading -- but they do not include an = sign. A simple gotcha that caught me out at first.

Pulling out issue IDs for scripting

You can cd into a repo folder and use gh issue list to get a list of issues in that repo. Chances are though, you need to search for specific issues by state, project, etc. The best way to do this is using gh search.

This snippet will pull out the issue IDs on their own:

gh search issues \
        --state open \
        --repo "LongTermSupport/lxc-bash" \
        --limit 1000 \
        | cat \
        | cut -d '      ' -f 2 

This snippet runs the Github search, then it is piped through cat to strip out colors and fancy formatting. Finally we use cut to pull out the numeric ID.

Updating the Project

Our next mission is to use a BASH loop to update the issues that we have found. If you are using the legacy projects in Github, the ones that are tied to a specific repo, then this loop should work for you:

for issueId in $(gh search issues \
        --state open \
        --repo "LongTermSupport/lxc-bash" \
        --limit 1000 \
        | cat \
        | cut -d '      ' -f 2  );
do
        echo "Issue ID: $issueId"
        set -x
        gh issue edit $issueId --add-project "project-name"
        set +x
        echo "EXITING AFTER FIRST ISSUE FOR TESTING"
        exit 1
done
~        

This runs the previous gh client search and pulls out the ID, then it will loop through the IDs and run an edit command to add the project.

Gotcha: You can’t use gh client to work with the new Github projects 🙁

Unfortunately, it seems that the client does not support the new projects system natively, as detailed on this ticket:

https://github.com/cli/cli/issues/4547

The suggestion is instead to use the client to make a GraphQL mutation…

(At this point, I’m really starting to miss Jira with simple bulk issue updates)

Facebook
Twitter
LinkedIn
About Joseph Edmonds

About Joseph Edmonds

Personal musings, tech tips, trivia and other things that might be interesting.

Get in touch today

Send me a message concerning your idea, problem, or question – and I’ll personally respond as soon as possible.

Connect with me on LinkedIn.