I recently sat down with Gregor, maintainer of JavaScrit Octokit, to talk about managing multiple repositories as a maintainer. The management of multiple repositories in an organization can become time-consuming and Gregor shared project, Octoherd as a way to script updates across multiple repositories.
Octoherd CLI
CLI to run a custom script on one or multiple repositories
Usage
$ octoherd.js [script] [repos...]
Positionals
script Path to *.js script. Must be an ES Module
repos One or multiple arrays in the form of 'repo-owner/repo-name'.
'repo-owner/*' will find all repositories for one owner. '*' will find
all repositories the user has access to [default: []]
Options:
--help Show help [boolean]
--version Show version number [boolean]
--octoherd-token Requires the "public_repo" scope for public
repositories, "repo" scope for private
repositories. [string] [required]
--octoherd-cache Cache responses for debugging. Creates a ./cache
folder if flag is set. Override by passing custom
path [string]
--octoherd-debug Show debug logs [boolean] [default: false]
--octoherd-bypass-confirms Bypass prompts to confirm mutating requests
[boolean] [default: false]
The script
must export a script
function which takes three parameters:
export async function script(octokit, repository, options) {
// do something here
}
-
octokit
is…
In our example, Gregor manages to updates the branch protection rules for multiple repositories using one script.
git clone https://github.com/octoherd/scripts.git
npx @octoherd/cli \
--octoherd-token 0123456789012345678901234567890123456789 \
scripts/sync-branch-protections/script.js \
"octoherd/*"\
--template "octoherd/cli"
If you have ideas for scripts that would help you manage common tasks across GitHub repositories that you would like to automate, considering dropping them in the octoherd/scripts issues.
Come along to our Open Source Friday live streams. We go live on the GitHub Twitch Channel most Fridays. Join the Meetup Group to stay up to date and see the topics each week.
Discussion (0)