Skip to content

Commit

Permalink
debug27
Browse files Browse the repository at this point in the history
  • Loading branch information
BrianCArnold committed Mar 16, 2023
1 parent b4a64ad commit 85c6aed
Show file tree
Hide file tree
Showing 7 changed files with 202 additions and 27 deletions.
44 changes: 41 additions & 3 deletions build/github.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
'use strict';
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
Expand Down Expand Up @@ -37,8 +37,44 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", { value: true });
const core = __importStar(require("@actions/core"));
const github = __importStar(require("@actions/github"));
require("lodash/partition");
const partition_1 = __importDefault(require("lodash/partition"));
const yaml_1 = __importDefault(require("yaml"));
const teams = {};
function getTeamMembers(teamName) {
return __awaiter(this, void 0, void 0, function* () {
const context = get_context();
const octokit = get_octokit();
const members = yield octokit.teams.listMembersInOrg({
org: 'SpiderRock',
team_slug: teamName
});
let teamMembers = [];
for (let i = 0; i < members.data.length; i++) {
let member = members.data[i];
teamMembers.push(member.login);
}
teams[teamName] = teamMembers;
return teamMembers;
});
}
function assign_reviewers(group) {
return __awaiter(this, void 0, void 0, function* () {
const context = get_context();
const octokit = get_octokit();
if (context.payload.pull_request == undefined) {
throw 'Pull Request Number is Null';
}
const [teams_with_prefix, individuals] = (0, partition_1.default)(group.members, member => member.startsWith('team:'));
const teams = teams_with_prefix.map((team_with_prefix) => team_with_prefix.replace('team:', ''));
return octokit.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
reviewers: individuals,
team_reviewers: teams,
});
});
}
function fetch_config() {
return __awaiter(this, void 0, void 0, function* () {
const context = get_context();
Expand Down Expand Up @@ -117,5 +153,7 @@ let get_octokit = () => cacheOctoKit || (cacheOctoKit = github.getOctokit(get_to
exports.default = {
fetch_config,
get_reviews,
fetch_changed_files
fetch_changed_files,
assign_reviewers,
getTeamMembers
};
19 changes: 15 additions & 4 deletions build/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
'use strict';
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
Expand Down Expand Up @@ -61,6 +61,7 @@ function run() {
core.debug('Retrieving required group configurations...');
let { affected: affectedGroups, unaffected: unaffectedGroups } = identifyGroupsByChangedFiles(config, yield github_1.default.fetch_changed_files());
for (let groupName in affectedGroups) {
yield github_1.default.assign_reviewers(affectedGroups[groupName]);
core.debug(` - Group: ${groupName}`);
if (affectedGroups[groupName].required == undefined) {
core.warning(' - Group Required Count not specified, assuming 1 approver from group required.');
Expand All @@ -73,8 +74,18 @@ function run() {
core.debug(` - Requiring ${affectedGroups[groupName].required} of the following:`);
for (let i in affectedGroups[groupName].members) {
let member = affectedGroups[groupName].members[i];
requirementMembers[groupName][member] = false;
core.debug(` - ${member}`);
if (member.startsWith('team:')) { // extract teams.
let teamMembers = yield github_1.default.getTeamMembers(member.substring(5));
for (let j in teamMembers) {
let teamMember = teamMembers[j];
requirementMembers[groupName][teamMember] = false;
core.debug(` - ${teamMember}`);
}
}
else {
requirementMembers[groupName][member] = false;
core.debug(` - ${member}`);
}
}
}
let reviewerState = {};
Expand Down Expand Up @@ -125,7 +136,7 @@ function run() {
core.info(`(${++appCount}/${groupApprovalRequired}) ✅ ${groupApprovedStrings[approval]}`);
}
for (let unapproval in groupNotApprovedStrings) {
core.info(`(${appCount}/${groupApprovalRequired}) ${groupNotApprovedStrings[unapproval]}`);
core.info(`(${appCount}/${groupApprovalRequired}) ${groupNotApprovedStrings[unapproval]}`);
}
core.endGroup();
}
Expand Down
59 changes: 54 additions & 5 deletions dist/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 15 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
"yaml": "^1.10.0"
},
"devDependencies": {
"@types/lodash": "^4.14.191",
"@types/minimatch": "^5.1.2",
"@types/node": "^18.15.2",
"@vercel/ncc": "^0.33.3",
Expand Down
60 changes: 51 additions & 9 deletions src/github.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,54 @@
'use strict';

import * as core from '@actions/core';
import * as github from '@actions/github';
import { PullsListReviewsResponseData, ChecksCreateResponseData } from '@octokit/types/dist-types/generated/Endpoints.d';
import { OctokitResponse } from '@octokit/types/dist-types/OctokitResponse.d';
import { PullsListReviewsResponseData } from '@octokit/types/dist-types/generated/Endpoints.d';
import { Context } from '@actions/github/lib/context';
import { GitHub } from '@actions/github/lib/utils';
import 'lodash/partition';
import partition from 'lodash/partition';
import yaml from 'yaml';
import { Config, ConfigGroup } from './config';

const teams: { [team: string]: string[] } = {};

async function getTeamMembers(teamName: string): Promise<string[]> {
const context = get_context();
const octokit = get_octokit();

const members = await octokit.teams.listMembersInOrg({
org: 'SpiderRock',
team_slug: teamName
});

let teamMembers: string[] = [];

for (let i = 0; i < members.data.length; i++) {
let member = members.data[i];
teamMembers.push(member.login);
}

teams[teamName] = teamMembers;

return teamMembers;
}

async function assign_reviewers(group: ConfigGroup) {
const context = get_context();
const octokit = get_octokit();

if (context.payload.pull_request == undefined) {
throw 'Pull Request Number is Null';
}

const [ teams_with_prefix, individuals ] = partition(group.members, member => member.startsWith('team:'));
const teams = teams_with_prefix.map((team_with_prefix) => team_with_prefix.replace('team:', ''));

return octokit.pulls.requestReviewers({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.payload.pull_request.number,
reviewers: individuals,
team_reviewers: teams,
});
}

async function fetch_config(): Promise<Config> {
const context = get_context();
Expand All @@ -28,7 +67,6 @@ async function fetch_config(): Promise<Config> {
return yaml.parse(ymlContent);
}


async function fetch_changed_files(): Promise<string[]> {
const context = get_context();

Expand Down Expand Up @@ -102,10 +140,12 @@ async function get_reviews(): Promise<PullsListReviewsResponseData> {
return result;
}


let cacheContext: Context | null = null;

let cacheToken: string | null = null;
let cacheConfigPath: string | null = null;

let cacheConfigPath: string | null = null;

let cacheOctoKit: InstanceType<typeof GitHub> | null = null;

let get_context: () => Context = () => cacheContext || (cacheContext = github.context);
Expand All @@ -119,5 +159,7 @@ let get_octokit:() => InstanceType<typeof GitHub> = () => cacheOctoKit || (cache
export default {
fetch_config,
get_reviews,
fetch_changed_files
fetch_changed_files,
assign_reviewers,
getTeamMembers
};
Loading

0 comments on commit 85c6aed

Please sign in to comment.