From 4d9303955752885a435a3e359b30dc20b218948b Mon Sep 17 00:00:00 2001 From: Prasad Prabhu Date: Wed, 16 Aug 2023 21:22:40 +0530 Subject: [PATCH] Fixing references --- dist/index.js | 438 +++++++++++++++++++++++++------------------------- 1 file changed, 219 insertions(+), 219 deletions(-) diff --git a/dist/index.js b/dist/index.js index f53ade4..ce21014 100644 --- a/dist/index.js +++ b/dist/index.js @@ -4149,6 +4149,7 @@ function checkMode (stat, options) { /***/ (function(__unusedmodule, exports, __webpack_require__) { "use strict"; + var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; @@ -4160,226 +4161,225 @@ function checkMode (stat, options) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); - const core = __importStar(require("@actions/core")); - const github = __importStar(require("@actions/github")); - const slugify_1 = __importDefault(require("@sindresorhus/slugify")); - const yaml = __importStar(require("js-yaml")); + const core = __importStar(__webpack_require__(470)); + const github = __importStar(__webpack_require__(469)); + const slugify_1 = __importDefault(__webpack_require__(178)); + const yaml = __importStar(__webpack_require__(414)); async function run() { - try { - const PERSONAL_TOKEN_TYPE = "personal"; - const APP_TOKEN_TYPE = "app"; - const token = core.getInput('repo-token', { required: true }); - const teamDataPath = core.getInput('team-data-path'); - const teamNamePrefix = core.getInput('prefix-teams-with'); - const tokenType = core.getInput('github-token-type'); - const allowInviteUsers = JSON.parse(core.getInput('allow-invite-members')); - core.debug(`tokenType: ${tokenType}, allowInviteUsers: ${allowInviteUsers}`); - const client = new github.GitHub(token); - const org = github.context.repo.owner; - let authenticatedUserResponse = null; - let authenticatedUser = null; - if (tokenType === PERSONAL_TOKEN_TYPE) { - core.debug('Fetching authenticated user'); - authenticatedUserResponse = await client.users.getAuthenticated(); - authenticatedUser = authenticatedUserResponse.data.login; - core.info(`GitHub client is authenticated as ${authenticatedUser}`); - } - else { - core.info("Running as app, did not get authenticated user"); - } - core.info(`Fetching team data from ${teamDataPath}`); - const teamDataContent = await fetchContent(client, teamDataPath); - core.debug(`raw teams config:\n${teamDataContent}`); - const teams = parseTeamData(teamDataContent); - core.debug(`Parsed teams configuration into this mapping of team names to team data: ${JSON.stringify(Object.fromEntries(teams))}`); - await synchronizeTeamData(client, org, authenticatedUser, teams, teamNamePrefix, allowInviteUsers); - } - catch (error) { - core.error(error); - core.setFailed(error.message); - } - } - async function synchronizeTeamData(client, org, authenticatedUser, teams, teamNamePrefix, allowInviteUsers) { - const existingTeams = await client.teams.list({ - org: org, - }); - const existingTeamsMap = {}; - for (const existingTeam of existingTeams.data) { - existingTeamsMap[existingTeam.name] = existingTeam.id; - } - for (const [unprefixedTeamName, teamData] of teams.entries()) { - const teamName = prefixName(unprefixedTeamName, teamNamePrefix); - const teamSlug = slugify_1.default(teamName, { decamelize: false }); - if (teamData.team_sync_ignored) { - core.debug(`Ignoring team ${unprefixedTeamName} due to its team_sync_ignored property`); - continue; - } - const { description, members: desiredMembers } = teamData; - core.debug(`Desired team members for team slug ${teamSlug}:`); - core.debug(JSON.stringify(desiredMembers)); - const { existingTeam, existingMembers } = await getExistingTeamAndMembers(client, org, teamSlug); - if (existingTeam) { - core.debug(`Existing team members for team slug ${teamSlug}:`); - core.debug(JSON.stringify(existingMembers)); - await client.teams.updateInOrg({ org, team_slug: teamSlug, name: teamName, description }); - await removeFormerTeamMembers(client, org, teamSlug, existingMembers, desiredMembers); - } - else { - core.info(`No team was found in ${org} with slug ${teamSlug}. Creating one.`); - const parentTeamId = teamData.parent_team !== undefined ? existingTeamsMap[teamData.parent_team] : null; - await createTeamWithNoMembers(client, org, teamName, teamSlug, authenticatedUser, description, parentTeamId); - } - await addNewTeamMembers(client, org, teamSlug, existingMembers, desiredMembers, allowInviteUsers); - } - } - function parseTeamData(rawTeamConfig) { - const teamsData = JSON.parse(JSON.stringify(yaml.safeLoad(rawTeamConfig))); - const unexpectedFormatError = new Error('Unexpected team data format (expected an object mapping team names to team metadata)'); - if (typeof teamsData !== 'object') { - throw unexpectedFormatError; - } - const teams = new Map(); - for (const teamName in teamsData) { - const teamData = teamsData[teamName]; - if (teamData.members) { - const { members } = teamData; - if (Array.isArray(members)) { - const teamGitHubUsernames = []; - for (const member of members) { - if (typeof member.github === 'string') { - teamGitHubUsernames.push(member.github); - } - else { - throw new Error(`Invalid member data encountered within team ${teamName}`); - } - } - const parsedTeamData = { members: teamGitHubUsernames }; - if ('description' in teamData) { - const { description } = teamData; - if (typeof description === 'string') { - parsedTeamData.description = description; - } - else { - throw new Error(`Invalid description property for team ${teamName} (expected a string)`); - } - } - if ('parent_team' in teamData) { - const { parent_team } = teamData; - if (typeof parent_team === 'string') { - parsedTeamData.parent_team = parent_team; - } - else { - throw new Error(`Invalid parent_team property for team ${teamName} (expected a string)`); - } - } - if ('team_sync_ignored' in teamData) { - const { team_sync_ignored } = teamData; - if (typeof team_sync_ignored === 'boolean') { - parsedTeamData.team_sync_ignored = team_sync_ignored; - } - else { - throw new Error(`Invalid team_sync_ignored property for team ${teamName} (expected a boolean)`); - } - } - teams.set(teamName, parsedTeamData); - continue; - } - } - throw unexpectedFormatError; - } - return teams; - } - function prefixName(unprefixedName, prefix) { - const trimmedPrefix = prefix.trim(); - return trimmedPrefix === '' ? unprefixedName : `${trimmedPrefix} ${unprefixedName}`; - } - async function removeFormerTeamMembers(client, org, teamSlug, existingMembers, desiredMembers) { - for (const username of existingMembers) { - if (!desiredMembers.includes(username)) { - core.info(`Removing ${username} from ${teamSlug}`); - await client.teams.removeMembershipInOrg({ org, team_slug: teamSlug, username }); - } - else { - core.debug(`Keeping ${username} in ${teamSlug}`); - } - } - } - async function addNewTeamMembers(client, org, teamSlug, existingMembers, desiredMembers, allowInviteUsers) { - for (const username of desiredMembers) { - if (!existingMembers.includes(username)) { - let addUser = true; - // if - if (!allowInviteUsers) { - const response = await client.orgs.checkMembership({ - org: org, - username: username, - }); - if (response.status === 204) { - console.log(`${username} is a member of ${org}.`); - addUser = true; - } - else { - console.log(`${username} is not a member of ${org}.`); - addUser = false; - } - } - if (addUser) { - core.info(`Adding ${username} to ${teamSlug}`); - await client.teams.addOrUpdateMembershipInOrg({ org, team_slug: teamSlug, username }); - } - else { - core.info(`${username} is not a member of ${org} yet, so not adding to ${teamSlug}`); - } - } - } - } - async function createTeamWithNoMembers(client, org, teamName, teamSlug, authenticatedUser, description, parentTeamId) { - let createTeamRequest = { org, name: teamName, description, privacy: 'closed' }; - if (parentTeamId != null) { - createTeamRequest.parent_team_id = parentTeamId; - } - await client.teams.create(createTeamRequest); - if (authenticatedUser != null) { - core.debug(`Removing creator (${authenticatedUser}) from ${teamSlug}`); - await client.teams.removeMembershipInOrg({ - org, - team_slug: teamSlug, - username: authenticatedUser - }); - } - } - async function getExistingTeamAndMembers(client, org, teamSlug) { - let existingTeam; - let existingMembers = []; - try { - const teamResponse = await client.teams.getByName({ org, team_slug: teamSlug }); - existingTeam = teamResponse.data; - const membersResponse = await client.teams.listMembersInOrg({ org, team_slug: teamSlug }); - existingMembers = membersResponse.data.map(m => m.login); - } - catch (error) { - existingTeam = null; - } - return { existingTeam, existingMembers }; - } - async function fetchContent(client, repoPath) { - const response = await client.repos.getContents({ - owner: github.context.repo.owner, - repo: github.context.repo.repo, - path: repoPath, - ref: github.context.sha - }); - if (Array.isArray(response.data)) { - throw new Error('path must point to a single file, not a directory'); - } - const { content, encoding } = response.data; - if (typeof content !== 'string' || encoding !== 'base64') { - throw new Error('Octokit.repos.getContents returned an unexpected response'); - } - return Buffer.from(content, encoding).toString(); - } - run(); - + try { + const PERSONAL_TOKEN_TYPE = "personal"; + const APP_TOKEN_TYPE = "app"; + const token = core.getInput('repo-token', { required: true }); + const teamDataPath = core.getInput('team-data-path'); + const teamNamePrefix = core.getInput('prefix-teams-with'); + const tokenType = core.getInput('github-token-type'); + const allowInviteUsers = JSON.parse(core.getInput('allow-invite-members')); + core.debug(`tokenType: ${tokenType}, allowInviteUsers: ${allowInviteUsers}`); + const client = new github.GitHub(token); + const org = github.context.repo.owner; + let authenticatedUserResponse = null; + let authenticatedUser = null; + if (tokenType === PERSONAL_TOKEN_TYPE) { + core.debug('Fetching authenticated user'); + authenticatedUserResponse = await client.users.getAuthenticated(); + authenticatedUser = authenticatedUserResponse.data.login; + core.info(`GitHub client is authenticated as ${authenticatedUser}`); + } + else { + core.info("Running as app, did not get authenticated user"); + } + core.info(`Fetching team data from ${teamDataPath}`); + const teamDataContent = await fetchContent(client, teamDataPath); + core.debug(`raw teams config:\n${teamDataContent}`); + const teams = parseTeamData(teamDataContent); + core.debug(`Parsed teams configuration into this mapping of team names to team data: ${JSON.stringify(Object.fromEntries(teams))}`); + await synchronizeTeamData(client, org, authenticatedUser, teams, teamNamePrefix, allowInviteUsers); + } + catch (error) { + core.error(error); + core.setFailed(error.message); + } +} +async function synchronizeTeamData(client, org, authenticatedUser, teams, teamNamePrefix, allowInviteUsers) { + const existingTeams = await client.teams.list({ + org: org, + }); + const existingTeamsMap = {}; + for (const existingTeam of existingTeams.data) { + existingTeamsMap[existingTeam.name] = existingTeam.id; + } + for (const [unprefixedTeamName, teamData] of teams.entries()) { + const teamName = prefixName(unprefixedTeamName, teamNamePrefix); + const teamSlug = slugify_1.default(teamName, { decamelize: false }); + if (teamData.team_sync_ignored) { + core.debug(`Ignoring team ${unprefixedTeamName} due to its team_sync_ignored property`); + continue; + } + const { description, members: desiredMembers } = teamData; + core.debug(`Desired team members for team slug ${teamSlug}:`); + core.debug(JSON.stringify(desiredMembers)); + const { existingTeam, existingMembers } = await getExistingTeamAndMembers(client, org, teamSlug); + if (existingTeam) { + core.debug(`Existing team members for team slug ${teamSlug}:`); + core.debug(JSON.stringify(existingMembers)); + await client.teams.updateInOrg({ org, team_slug: teamSlug, name: teamName, description }); + await removeFormerTeamMembers(client, org, teamSlug, existingMembers, desiredMembers); + } + else { + core.info(`No team was found in ${org} with slug ${teamSlug}. Creating one.`); + const parentTeamId = teamData.parent_team !== undefined ? existingTeamsMap[teamData.parent_team] : null; + await createTeamWithNoMembers(client, org, teamName, teamSlug, authenticatedUser, description, parentTeamId); + } + await addNewTeamMembers(client, org, teamSlug, existingMembers, desiredMembers, allowInviteUsers); + } +} +function parseTeamData(rawTeamConfig) { + const teamsData = JSON.parse(JSON.stringify(yaml.safeLoad(rawTeamConfig))); + const unexpectedFormatError = new Error('Unexpected team data format (expected an object mapping team names to team metadata)'); + if (typeof teamsData !== 'object') { + throw unexpectedFormatError; + } + const teams = new Map(); + for (const teamName in teamsData) { + const teamData = teamsData[teamName]; + if (teamData.members) { + const { members } = teamData; + if (Array.isArray(members)) { + const teamGitHubUsernames = []; + for (const member of members) { + if (typeof member.github === 'string') { + teamGitHubUsernames.push(member.github); + } + else { + throw new Error(`Invalid member data encountered within team ${teamName}`); + } + } + const parsedTeamData = { members: teamGitHubUsernames }; + if ('description' in teamData) { + const { description } = teamData; + if (typeof description === 'string') { + parsedTeamData.description = description; + } + else { + throw new Error(`Invalid description property for team ${teamName} (expected a string)`); + } + } + if ('parent_team' in teamData) { + const { parent_team } = teamData; + if (typeof parent_team === 'string') { + parsedTeamData.parent_team = parent_team; + } + else { + throw new Error(`Invalid parent_team property for team ${teamName} (expected a string)`); + } + } + if ('team_sync_ignored' in teamData) { + const { team_sync_ignored } = teamData; + if (typeof team_sync_ignored === 'boolean') { + parsedTeamData.team_sync_ignored = team_sync_ignored; + } + else { + throw new Error(`Invalid team_sync_ignored property for team ${teamName} (expected a boolean)`); + } + } + teams.set(teamName, parsedTeamData); + continue; + } + } + throw unexpectedFormatError; + } + return teams; +} +function prefixName(unprefixedName, prefix) { + const trimmedPrefix = prefix.trim(); + return trimmedPrefix === '' ? unprefixedName : `${trimmedPrefix} ${unprefixedName}`; +} +async function removeFormerTeamMembers(client, org, teamSlug, existingMembers, desiredMembers) { + for (const username of existingMembers) { + if (!desiredMembers.includes(username)) { + core.info(`Removing ${username} from ${teamSlug}`); + await client.teams.removeMembershipInOrg({ org, team_slug: teamSlug, username }); + } + else { + core.debug(`Keeping ${username} in ${teamSlug}`); + } + } +} +async function addNewTeamMembers(client, org, teamSlug, existingMembers, desiredMembers, allowInviteUsers) { + for (const username of desiredMembers) { + if (!existingMembers.includes(username)) { + let addUser = true; + // if + if (!allowInviteUsers) { + const response = await client.orgs.checkMembership({ + org: org, + username: username, + }); + if (response.status === 204) { + console.log(`${username} is a member of ${org}.`); + addUser = true; + } + else { + console.log(`${username} is not a member of ${org}.`); + addUser = false; + } + } + if (addUser) { + core.info(`Adding ${username} to ${teamSlug}`); + await client.teams.addOrUpdateMembershipInOrg({ org, team_slug: teamSlug, username }); + } + else { + core.info(`${username} is not a member of ${org} yet, so not adding to ${teamSlug}`); + } + } + } +} +async function createTeamWithNoMembers(client, org, teamName, teamSlug, authenticatedUser, description, parentTeamId) { + let createTeamRequest = { org, name: teamName, description, privacy: 'closed' }; + if (parentTeamId != null) { + createTeamRequest.parent_team_id = parentTeamId; + } + await client.teams.create(createTeamRequest); + if (authenticatedUser != null) { + core.debug(`Removing creator (${authenticatedUser}) from ${teamSlug}`); + await client.teams.removeMembershipInOrg({ + org, + team_slug: teamSlug, + username: authenticatedUser + }); + } +} +async function getExistingTeamAndMembers(client, org, teamSlug) { + let existingTeam; + let existingMembers = []; + try { + const teamResponse = await client.teams.getByName({ org, team_slug: teamSlug }); + existingTeam = teamResponse.data; + const membersResponse = await client.teams.listMembersInOrg({ org, team_slug: teamSlug }); + existingMembers = membersResponse.data.map(m => m.login); + } + catch (error) { + existingTeam = null; + } + return { existingTeam, existingMembers }; +} +async function fetchContent(client, repoPath) { + const response = await client.repos.getContents({ + owner: github.context.repo.owner, + repo: github.context.repo.repo, + path: repoPath, + ref: github.context.sha + }); + if (Array.isArray(response.data)) { + throw new Error('path must point to a single file, not a directory'); + } + const { content, encoding } = response.data; + if (typeof content !== 'string' || encoding !== 'base64') { + throw new Error('Octokit.repos.getContents returned an unexpected response'); + } + return Buffer.from(content, encoding).toString(); +} +run(); /***/ }),