{"id":23613677,"url":"https://github.com/freckle/hackage-team","last_synced_at":"2025-11-06T09:30:34.275Z","repository":{"id":52192141,"uuid":"357579525","full_name":"freckle/hackage-team","owner":"freckle","description":"CLI for managing Hackage package maintainers","archived":false,"fork":false,"pushed_at":"2025-01-13T00:31:05.000Z","size":41,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":17,"default_branch":"main","last_synced_at":"2025-01-13T01:28:41.507Z","etag":null,"topics":["terraform-managed"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/freckle.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-13T14:18:47.000Z","updated_at":"2024-09-24T19:53:06.000Z","dependencies_parsed_at":"2024-12-12T20:31:59.031Z","dependency_job_id":"08f90a38-c30e-4919-b7d5-85b7eb5e2262","html_url":"https://github.com/freckle/hackage-team","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freckle%2Fhackage-team","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freckle%2Fhackage-team/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freckle%2Fhackage-team/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freckle%2Fhackage-team/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/freckle","download_url":"https://codeload.github.com/freckle/hackage-team/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239491352,"owners_count":19647811,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["terraform-managed"],"created_at":"2024-12-27T17:18:42.741Z","updated_at":"2025-11-06T09:30:34.239Z","avatar_url":"https://github.com/freckle.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hackage Team\n\nCLI for maintaining a team of maintainers on Hackage packages.\n\n## Operation\n\nThis tool iterates over all packages it can access with the given token. It\ncompares the list of actual Maintainers for each package to a central list of\nexpected maintainers. It reports which users should be added or removed to make\nthe actual list align with expected. Optionally, it can proceed with adding and\nremoving as necessary.\n\n## Context\n\nThe Hackage Trustees recommend a shared account that is a Maintainer (but not\nUploader) on all of your team packages. Then, this account can be used to\nadd/remove individual accounts as Uploaders when folks come and go on your team.\n\nThis tool can function when run as any user on the team, but it compliments the\n_Shared Maintainer_ design described above when used with a token for such a\nuser.\n\n## Usage\n\n1. Create a shared user and have the trustees grant them Maintainer rights\n\n1. Add this user to all of your Hackage packages' maintainers lists\n\n1. Generate an API Key for that user and export it as `HACKAGE_API_KEY` when\n   running this CLI\n\n1. Run the CLI, passing a list of Hackage usernames as stdin\n\n   ```console\n   % hackage-team --no-remove \u003c ./FRECKLE_MAINTAINERS.txt\n   [Info] Checking package: graphula\n   [Info] Expected, not present: halogenandtoast\n   [Info] Expected, not present: mjgpy3\n   [Info] Checking package: hspec-junit-formatter\n   [Info] Expected, not present: cbeav\n   [Info] Expected, not present: cdparks\n   [Info] Expected, not present: dukerutledge\n   [Info] Expected, not present: halogenandtoast\n   [Info] Checking package: nonempty-zipper\n   [Info] Checking package: sendgrid-v3\n   [Info] Expected, not present: cbeav\n   [Info] Expected, not present: cdparks\n   [Info] Expected, not present: dukerutledge\n   [Info] Expected, not present: halogenandtoast\n   [Info] Checking package: yesod-page-cursor\n   [Info] Expected, not present: halogenandtoast\n   [Info] Expected, not present: mjgpy3\n   ```\n\n   See `--help` for more options.\n\n1. If satisfied, re-run with `--fix` to actually adjust the maintainers lists\n\n---\n\n[LICENSE](./LICENSE) | [CHANGELOG](./CHANGELOG.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreckle%2Fhackage-team","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffreckle%2Fhackage-team","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreckle%2Fhackage-team/lists"}