CLI for maintaining a team of maintainers on Hackage packages.
This tool iterates over all packages it can access with the given token. It compares the list of actual Maintainers for each package to a central list of expected maintainers. It reports which users should be added or removed to make the actual list align with expected. Optionally, it can proceed with adding and removing as necessary.
The Hackage Trustees recommend a shared account that is a Maintainer (but not Uploader) on all of your team packages. Then, this account can be used to add/remove individual accounts as Uploaders when folks come and go on your team.
This tool can function when run as any user on the team, but it compliments the Shared Maintainer design described above when used with a token for such a user.
-
Create a shared user and have the trustees grant them Maintainer rights
-
Add this user to all of your Hackage packages' maintainers lists
-
Generate an API Key for that user and export it as
HACKAGE_API_KEY
when running this CLI -
Run the CLI, passing a list of Hackage usernames as stdin
% hackage-team --no-remove < ./FRECKLE_MAINTAINERS.txt [Info] Checking package: graphula [Info] Expected, not present: halogenandtoast [Info] Expected, not present: mjgpy3 [Info] Checking package: hspec-junit-formatter [Info] Expected, not present: cbeav [Info] Expected, not present: cdparks [Info] Expected, not present: dukerutledge [Info] Expected, not present: halogenandtoast [Info] Checking package: nonempty-zipper [Info] Checking package: sendgrid-v3 [Info] Expected, not present: cbeav [Info] Expected, not present: cdparks [Info] Expected, not present: dukerutledge [Info] Expected, not present: halogenandtoast [Info] Checking package: yesod-page-cursor [Info] Expected, not present: halogenandtoast [Info] Expected, not present: mjgpy3
See
--help
for more options. -
If satisfied, re-run with
--fix
to actually adjust the maintainers lists