DEV Community

loading...
Cover image for Next level repository management with Octoherd
GitHub

Next level repository management with Octoherd

bdougieyo profile image Brian Douglas ・1 min read

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.

GitHub logo octoherd / cli

CLI to run a octoherd scripts on one or multiple repositories

Octoherd CLI

CLI to run a custom script on one or multiple repositories

Octoherd Avatar

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
}
Enter fullscreen mode Exit fullscreen mode
  • 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"
Enter fullscreen mode Exit fullscreen mode

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)

pic
Editor guide