From 414374d24beae9036c7513873263c242e847d8d5 Mon Sep 17 00:00:00 2001 From: galargh Date: Fri, 29 Aug 2025 11:59:29 +0100 Subject: [PATCH] chore: add repos go team to all repos starting with go- --- scripts/src/actions/fix-yaml-config.ts | 21 +++++--- .../actions/shared/add-team-to-all-repos.ts | 53 +++++++++++++++++++ 2 files changed, 66 insertions(+), 8 deletions(-) create mode 100644 scripts/src/actions/shared/add-team-to-all-repos.ts diff --git a/scripts/src/actions/fix-yaml-config.ts b/scripts/src/actions/fix-yaml-config.ts index 3df1d1c..c81c42b 100644 --- a/scripts/src/actions/fix-yaml-config.ts +++ b/scripts/src/actions/fix-yaml-config.ts @@ -1,5 +1,6 @@ import 'reflect-metadata' -import {Permission} from '../resources/repository-collaborator.js' +import {Permission as CollaboratorPermission} from '../resources/repository-collaborator.js' +import {Permission as TeamPermission} from '../resources/repository-team.js' import {Repository} from '../resources/repository.js' import {runFormat} from './shared/format.js' import {runAddCollaboratorToAllRepos} from './shared/add-collaborator-to-all-repos.js' @@ -9,6 +10,7 @@ import {runToggleArchivedRepos} from './shared/toggle-archived-repos.js' import {runDescribeAccessChanges} from './shared/describe-access-changes.js' import * as core from '@actions/core' +import { runAddTeamToAllRepos } from './shared/add-team-to-all-repos.js' function isInitialised(repository: Repository) { return ![ @@ -29,14 +31,12 @@ function isJS(repository: Repository) { return repository.name.startsWith('js-libp2p') || ['interop'].includes(repository.name) } -function isPublic(repository: Repository) { - return repository.visibility === 'public' +function isGo(repository: Repository) { + return repository.name.startsWith('go-') } -function isFork(repository: Repository) { - return [ - 'uci' - ].includes(repository.name) +function isPublic(repository: Repository) { + return repository.visibility === 'public' } async function run() { @@ -57,7 +57,12 @@ async function run() { ) await runAddCollaboratorToAllRepos( 'web3-bot', - Permission.Push + CollaboratorPermission.Push + ) + await runAddTeamToAllRepos( + 'Repos - Go', + TeamPermission.Push, + r => isGo(r), ) await runToggleArchivedRepos() const accessChangesDescription = await runDescribeAccessChanges() diff --git a/scripts/src/actions/shared/add-team-to-all-repos.ts b/scripts/src/actions/shared/add-team-to-all-repos.ts new file mode 100644 index 0000000..63a5cc5 --- /dev/null +++ b/scripts/src/actions/shared/add-team-to-all-repos.ts @@ -0,0 +1,53 @@ +import {Config} from '../../yaml/config.js' +import {Repository} from '../../resources/repository.js' +import * as core from '@actions/core' +import { + Permission, + RepositoryTeam +} from '../../resources/repository-team.js' + +export async function runAddTeamToAllRepos( + name: string, + permission: Permission, + repositoryFilter: (repository: Repository) => boolean = (): boolean => true +): Promise { + const config = Config.FromPath() + + await addTeamToAllRepos( + config, + name, + permission, + repositoryFilter + ) + + config.save() +} + +export async function addTeamToAllRepos( + config: Config, + name: string, + permission: Permission, + repositoryFilter: (repository: Repository) => boolean = () => true +): Promise { + const collaborators = config + .getResources(RepositoryTeam) + .filter(c => c.team === name) + + const repositories = config + .getResources(Repository) + .filter(r => !r.archived) + .filter(repositoryFilter) + .filter(r => !collaborators.some(c => c.repository === r.name)) + + for (const repository of repositories) { + const collaborator = new RepositoryTeam( + repository.name, + name, + permission + ) + core.info( + `Adding ${collaborator.team} as a team collaborator with ${collaborator.permission} access to ${collaborator.repository} repository` + ) + config.addResource(collaborator) + } +}