Skip to content
This repository was archived by the owner on Apr 2, 2026. It is now read-only.

Commit 954fa43

Browse files
committed
feat: change formatting of summary to report start & end
1 parent c75ecad commit 954fa43

4 files changed

Lines changed: 103 additions & 18 deletions

File tree

dist/post/index.js

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27854,19 +27854,27 @@ function formatMs(ms) {
2785427854
return `${hours}h ${mins}m ${secs}s`;
2785527855
}
2785627856

27857-
function makeSummaryTable(resources) {
27857+
function makeSummaryTable(resources, options = {}) {
27858+
const useMinimumHeader = Boolean(options.useMinimumHeader);
2785827859
const summaryTable = [
2785927860
[
2786027861
{ data: 'Bucket', header: true },
27861-
{ data: 'Used', header: true },
27862-
{ data: 'Remaining', header: true }
27862+
{ data: 'Used (Start)', header: true },
27863+
{ data: 'Remaining (Start)', header: true },
27864+
{ data: 'Used (End)', header: true },
27865+
{ data: 'Remaining (End)', header: true },
27866+
{ data: useMinimumHeader ? 'Used (Minimum)' : 'Used (Total)', header: true }
2786327867
]
2786427868
];
27869+
const formatValue = (value) => (Number.isFinite(value) ? String(value) : 'n/a');
2786527870
for (const [bucket, info] of Object.entries(resources)) {
2786627871
summaryTable.push([
2786727872
{ data: bucket },
27868-
{ data: String(info.used) },
27869-
{ data: String(info.remaining) }
27873+
{ data: formatValue(info.used_start) },
27874+
{ data: formatValue(info.remaining_start) },
27875+
{ data: formatValue(info.used_end) },
27876+
{ data: formatValue(info.remaining_end) },
27877+
{ data: formatValue(info.used_total) }
2787027878
]);
2787127879
}
2787227880

@@ -28173,6 +28181,7 @@ async function run() {
2817328181
log(`[github-api-usage-tracker] ${JSON.stringify(endingResources, null, 2)}`);
2817428182

2817528183
const data = {};
28184+
const summaryData = {};
2817628185
const crossedBuckets = [];
2817728186
let totalUsed = 0;
2817828187
let totalIsMinimum = false;
@@ -28249,6 +28258,25 @@ async function run() {
2824928258
crossed_reset: usage.crossed_reset,
2825028259
used_is_minimum: usage.used_is_minimum
2825128260
};
28261+
const startingRemaining = Number(startingBucket.remaining);
28262+
const startingLimit = Number(startingBucket.limit);
28263+
const endingRemaining = Number(endingBucket.remaining);
28264+
const endingLimit = Number(endingBucket.limit);
28265+
const startUsed =
28266+
Number.isFinite(startingLimit) && Number.isFinite(startingRemaining)
28267+
? startingLimit - startingRemaining
28268+
: null;
28269+
const endUsed =
28270+
Number.isFinite(endingLimit) && Number.isFinite(endingRemaining)
28271+
? endingLimit - endingRemaining
28272+
: null;
28273+
summaryData[bucket] = {
28274+
used_start: startUsed,
28275+
remaining_start: Number.isFinite(startingRemaining) ? startingRemaining : null,
28276+
used_end: endUsed,
28277+
remaining_end: Number.isFinite(endingRemaining) ? endingRemaining : null,
28278+
used_total: usage.used
28279+
};
2825228280
if (usage.crossed_reset) {
2825328281
crossedBuckets.push(bucket);
2825428282
}
@@ -28276,7 +28304,7 @@ async function run() {
2827628304
);
2827728305
const summary = core.summary
2827828306
.addHeading('GitHub API Usage Tracker Summary')
28279-
.addTable(makeSummaryTable(data));
28307+
.addTable(makeSummaryTable(summaryData, { useMinimumHeader: totalIsMinimum }));
2828028308
if (crossedBuckets.length > 0) {
2828128309
summary.addRaw(
2828228310
`<p><strong>Reset Window Crossed:</strong> Yes (${crossedBuckets.join(', ')})</p>`,

src/post-utils.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,27 @@ function formatMs(ms) {
1616
return `${hours}h ${mins}m ${secs}s`;
1717
}
1818

19-
function makeSummaryTable(resources) {
19+
function makeSummaryTable(resources, options = {}) {
20+
const useMinimumHeader = Boolean(options.useMinimumHeader);
2021
const summaryTable = [
2122
[
2223
{ data: 'Bucket', header: true },
23-
{ data: 'Used', header: true },
24-
{ data: 'Remaining', header: true }
24+
{ data: 'Used (Start)', header: true },
25+
{ data: 'Remaining (Start)', header: true },
26+
{ data: 'Used (End)', header: true },
27+
{ data: 'Remaining (End)', header: true },
28+
{ data: useMinimumHeader ? 'Used (Minimum)' : 'Used (Total)', header: true }
2529
]
2630
];
31+
const formatValue = (value) => (Number.isFinite(value) ? String(value) : 'n/a');
2732
for (const [bucket, info] of Object.entries(resources)) {
2833
summaryTable.push([
2934
{ data: bucket },
30-
{ data: String(info.used) },
31-
{ data: String(info.remaining) }
35+
{ data: formatValue(info.used_start) },
36+
{ data: formatValue(info.remaining_start) },
37+
{ data: formatValue(info.used_end) },
38+
{ data: formatValue(info.remaining_end) },
39+
{ data: formatValue(info.used_total) }
3240
]);
3341
}
3442

src/post.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ async function run() {
107107
log(`[github-api-usage-tracker] ${JSON.stringify(endingResources, null, 2)}`);
108108

109109
const data = {};
110+
const summaryData = {};
110111
const crossedBuckets = [];
111112
let totalUsed = 0;
112113
let totalIsMinimum = false;
@@ -183,6 +184,25 @@ async function run() {
183184
crossed_reset: usage.crossed_reset,
184185
used_is_minimum: usage.used_is_minimum
185186
};
187+
const startingRemaining = Number(startingBucket.remaining);
188+
const startingLimit = Number(startingBucket.limit);
189+
const endingRemaining = Number(endingBucket.remaining);
190+
const endingLimit = Number(endingBucket.limit);
191+
const startUsed =
192+
Number.isFinite(startingLimit) && Number.isFinite(startingRemaining)
193+
? startingLimit - startingRemaining
194+
: null;
195+
const endUsed =
196+
Number.isFinite(endingLimit) && Number.isFinite(endingRemaining)
197+
? endingLimit - endingRemaining
198+
: null;
199+
summaryData[bucket] = {
200+
used_start: startUsed,
201+
remaining_start: Number.isFinite(startingRemaining) ? startingRemaining : null,
202+
used_end: endUsed,
203+
remaining_end: Number.isFinite(endingRemaining) ? endingRemaining : null,
204+
used_total: usage.used
205+
};
186206
if (usage.crossed_reset) {
187207
crossedBuckets.push(bucket);
188208
}
@@ -210,7 +230,7 @@ async function run() {
210230
);
211231
const summary = core.summary
212232
.addHeading('GitHub API Usage Tracker Summary')
213-
.addTable(makeSummaryTable(data));
233+
.addTable(makeSummaryTable(summaryData, { useMinimumHeader: totalIsMinimum }));
214234
if (crossedBuckets.length > 0) {
215235
summary.addRaw(
216236
`<p><strong>Reset Window Crossed:</strong> Yes (${crossedBuckets.join(', ')})</p>`,

tests/post-utils.test.mjs

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,47 @@ describe('post utils', () => {
2222

2323
it('builds a summary table with stringified counts', () => {
2424
const table = makeSummaryTable({
25-
core: { used: 3, remaining: 10 },
26-
search: { used: 1, remaining: 2 }
25+
core: {
26+
used_start: 3,
27+
remaining_start: 10,
28+
used_end: 5,
29+
remaining_end: 8,
30+
used_total: 2
31+
},
32+
search: {
33+
used_start: 1,
34+
remaining_start: 2,
35+
used_end: 1,
36+
remaining_end: 2,
37+
used_total: 0
38+
}
2739
});
2840

2941
expect(table).toEqual([
3042
[
3143
{ data: 'Bucket', header: true },
32-
{ data: 'Used', header: true },
33-
{ data: 'Remaining', header: true }
44+
{ data: 'Used (Start)', header: true },
45+
{ data: 'Remaining (Start)', header: true },
46+
{ data: 'Used (End)', header: true },
47+
{ data: 'Remaining (End)', header: true },
48+
{ data: 'Used (Total)', header: true }
3449
],
35-
[{ data: 'core' }, { data: '3' }, { data: '10' }],
36-
[{ data: 'search' }, { data: '1' }, { data: '2' }]
50+
[
51+
{ data: 'core' },
52+
{ data: '3' },
53+
{ data: '10' },
54+
{ data: '5' },
55+
{ data: '8' },
56+
{ data: '2' }
57+
],
58+
[
59+
{ data: 'search' },
60+
{ data: '1' },
61+
{ data: '2' },
62+
{ data: '1' },
63+
{ data: '2' },
64+
{ data: '0' }
65+
]
3766
]);
3867
});
3968
});

0 commit comments

Comments
 (0)