Skip to content

Commit

Permalink
fix: rulesSummaries serialization fix
Browse files Browse the repository at this point in the history
  • Loading branch information
bradennapier committed Aug 4, 2020
1 parent a43e895 commit 2793acf
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 19 deletions.
6 changes: 2 additions & 4 deletions lib/utils/SerializerOctokitPlugin/plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ const artifacts_1 = require("../../artifacts");
const utils_1 = require("../../utils");
const ARTIFACTS = new Set();
exports.SerializerOctokitPlugin = (octokit, clientOptions) => {
console.log('[SerializerOctokitPlugin] | Plugin Called: ', clientOptions);
const { data } = clientOptions.serializer;
const match = clientOptions.serializer.routes
? routeMatcher_1.requestRouteMatcher(clientOptions.serializer.routes)
Expand All @@ -28,8 +27,7 @@ exports.SerializerOctokitPlugin = (octokit, clientOptions) => {
if (!serializer) {
throw new Error('[SerializerOctokitPlugin] | Attempted to serialize a path that is not handled');
}
data.state.rulesSummaries = [...data.state.rulesSummaries];
const serializeResult = yield serializer.serialize(data, requestOptions);
const serializeResult = yield serializer.serialize(Object.assign(Object.assign({}, data), { state: Object.assign(Object.assign({}, data.state), { rulesSummaries: Array.from(data.state.rulesSummaries) }) }), requestOptions);
console.log('Serialize Result: ', JSON.stringify(serializeResult, null, 2));
artifact.requests.add([requestOptions.url, serializeResult]);
return serializeResult.result;
Expand Down Expand Up @@ -58,10 +56,10 @@ exports.SerializerOctokitPlugin = (octokit, clientOptions) => {
if (!serializer) {
throw new Error(`[SerializerOctokitPlugin] | Attempted to deserialize a path "${route}" which is not handled`);
}
data.state.rulesSummaries = new Map(data.state.rulesSummaries);
yield serializer.deserialize(data, descriptor, octokit);
yield issues_1.handleIssueComment(octokit, data);
yield artifacts_1.updateIssueState(octokit, data);
console.log('Success!');
yield artifacts_1.deleteArtifactByName(octokit, utils_1.getIssueLintResultsName(data));
}
}
Expand Down
5 changes: 3 additions & 2 deletions lib/utils/markdown.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,14 @@ function getRuleSummary(summary, data) {
`;
}
function getSortedRuleSummaries(data) {
if ([...data.state.rulesSummaries].length === 0) {
const summaries = Array.from(data.state.rulesSummaries);
if (summaries.length === 0) {
return '';
}
return dedent_1.default `
---
${[...data.state.rulesSummaries]
${summaries
.sort(([, a], [, b]) => a.level.localeCompare(b.level))
.map(([, summary]) => getRuleSummary(summary, data))
.join('\n\n---\n\n')}
Expand Down
25 changes: 14 additions & 11 deletions src/utils/SerializerOctokitPlugin/plugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ export const SerializerOctokitPlugin = (
clientOptions: Parameters<OctokitPlugin>[1],
// eslint-disable-next-line @typescript-eslint/no-explicit-any
): { [key: string]: (...args: any[]) => any } => {
console.log('[SerializerOctokitPlugin] | Plugin Called: ', clientOptions);

const { data }: { data: ActionData } = clientOptions.serializer;

const match = clientOptions.serializer.routes
Expand Down Expand Up @@ -69,14 +67,18 @@ export const SerializerOctokitPlugin = (
);
}

// TODO - should probably serialize a small amount of data and recapture
// TODO - this data when needed on scheduler.
// we need to convert these for them to be usable
// eslint-disable-next-line @typescript-eslint/no-explicit-any
(data.state as any).rulesSummaries = [...data.state.rulesSummaries];

const serializeResult = await serializer.serialize(
data,
{
...data,
state: {
...data.state,
// TODO - should probably serialize a small amount of data and recapture
// TODO - this data when needed on scheduler.
// we need to convert these for them to be usable
// eslint-disable-next-line @typescript-eslint/no-explicit-any
rulesSummaries: Array.from(data.state.rulesSummaries) as any,
},
},
requestOptions,
);

Expand Down Expand Up @@ -139,12 +141,13 @@ export const SerializerOctokitPlugin = (
);
}

// this is converted with Array.from() before serializing, turn back into map
data.state.rulesSummaries = new Map(data.state.rulesSummaries);

await serializer.deserialize(data, descriptor, octokit);
await handleIssueComment(octokit, data);
await updateIssueState(octokit, data);

console.log('Success!');

// the result artifact can now be removed
await deleteArtifactByName(
octokit,
Expand Down
5 changes: 3 additions & 2 deletions src/utils/markdown.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,14 @@ function getRuleSummary(summary: LintRuleSummary, data: ActionData): string {
}

export function getSortedRuleSummaries(data: ActionData): string {
if ([...data.state.rulesSummaries].length === 0) {
const summaries = Array.from(data.state.rulesSummaries);
if (summaries.length === 0) {
return '';
}
return dedent`
---
${[...data.state.rulesSummaries]
${summaries
.sort(([, a], [, b]) => a.level.localeCompare(b.level))
.map(([, summary]) => getRuleSummary(summary, data))
.join('\n\n---\n\n')}
Expand Down

0 comments on commit 2793acf

Please sign in to comment.