From 781cc0474f5e0f1e051472e465e722a0b4e84388 Mon Sep 17 00:00:00 2001 From: Sanjula Ganepola Date: Tue, 10 Dec 2024 01:03:04 -0500 Subject: [PATCH] Add support for skipped job and step status Signed-off-by: Sanjula Ganepola --- package.json | 24 ++++++++++++++++-------- src/act.ts | 13 ++++++++++--- src/historyManager.ts | 14 ++++++++++++++ src/views/history/job.ts | 2 +- 4 files changed, 41 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index ece76bb..a092e9b 100644 --- a/package.json +++ b/package.json @@ -765,6 +765,14 @@ "light": "#89d185" } }, + { + "id": "GitHubLocalActions.red", + "description": "Color for red in the GitHub Local Actions extension", + "defaults": { + "dark": "#f48771", + "light": "#f48771" + } + }, { "id": "GitHubLocalActions.yellow", "description": "Color for yellow in the GitHub Local Actions extension", @@ -773,6 +781,14 @@ "light": "#cca700" } }, + { + "id": "GitHubLocalActions.grey", + "description": "Color for grey in the GitHub Local Actions extension", + "defaults": { + "dark": "#808080", + "light": "#808080" + } + }, { "id": "GitHubLocalActions.purple", "description": "Color for purple in the GitHub Local Actions extension", @@ -780,14 +796,6 @@ "dark": "#d6bcfa", "light": "#d6bcfa" } - }, - { - "id": "GitHubLocalActions.red", - "description": "Color for red in the GitHub Local Actions extension", - "defaults": { - "dark": "#f48771", - "light": "#f48771" - } } ] }, diff --git a/src/act.ts b/src/act.ts index ba4e6c2..7b820a6 100644 --- a/src/act.ts +++ b/src/act.ts @@ -375,7 +375,7 @@ export class Act { ...settings.options.map(option => option.path ? `--${option.name} ${option.path}` : `--${option.name}`) ]; - const command = `${actCommand} ${Option.Json} ${commandArgs.options.join(' ')} ${userOptions.join(' ')}`; + const command = `${actCommand} ${Option.Json} ${Option.Verbose} ${commandArgs.options.join(' ')} ${userOptions.join(' ')}`; const displayCommand = `${actCommand} ${commandArgs.options.join(' ')} ${userOptions.join(' ')}`; // Execute task @@ -442,6 +442,13 @@ export class Act { let message: string; try { const parsedMessage = JSON.parse(line); + + // Filter all debug and trace messages except for skipped jobs and steps + if (parsedMessage.level && ['debug', 'trace'].includes(parsedMessage.level) && parsedMessage.jobResult !== 'skipped' && parsedMessage.stepResult !== 'skipped') { + continue; + } + + // Prepend job name to message if (typeof parsedMessage.msg === 'string') { message = `${parsedMessage.job ? `[${parsedMessage.job}] ` : ``}${parsedMessage.msg}`; } else { @@ -516,14 +523,14 @@ export class Act { if (parsedMessage.stepResult) { this.historyManager.workspaceHistory[commandArgs.path][historyIndex].jobs![jobIndex].steps![stepIndex].status = - parsedMessage.stepResult === 'success' ? HistoryStatus.Success : HistoryStatus.Failed; + HistoryManager.stepResultToHistoryStatus(parsedMessage.stepResult); this.historyManager.workspaceHistory[commandArgs.path][historyIndex].jobs![jobIndex].steps![stepIndex].date.end = dateString; } } if (parsedMessage.jobResult) { this.historyManager.workspaceHistory[commandArgs.path][historyIndex].jobs![jobIndex].status = - parsedMessage.jobResult === 'success' ? HistoryStatus.Success : HistoryStatus.Failed; + HistoryManager.stepResultToHistoryStatus(parsedMessage.jobResult); this.historyManager.workspaceHistory[commandArgs.path][historyIndex].jobs![jobIndex].date.end = dateString; } diff --git a/src/historyManager.ts b/src/historyManager.ts index 6c38843..47b52d6 100644 --- a/src/historyManager.ts +++ b/src/historyManager.ts @@ -42,6 +42,7 @@ export enum HistoryStatus { Running = 'Running', Success = 'Success', Failed = 'Failed', + Skipped = 'Skipped', Cancelled = 'Cancelled', Unknown = 'Unknown' } @@ -132,8 +133,21 @@ export class HistoryManager { return new ThemeIcon('error', new ThemeColor('GitHubLocalActions.red')); case HistoryStatus.Cancelled: return new ThemeIcon('circle-slash', new ThemeColor('GitHubLocalActions.yellow')); + case HistoryStatus.Skipped: + return new ThemeIcon('issues', new ThemeColor('GitHubLocalActions.grey')); case HistoryStatus.Unknown: return new ThemeIcon('question', new ThemeColor('GitHubLocalActions.purple')); } } + + static stepResultToHistoryStatus(stepResult: string) { + switch (stepResult) { + case 'success': + return HistoryStatus.Success; + case 'skipped': + return HistoryStatus.Skipped; + default: + return HistoryStatus.Failed; + } + } } \ No newline at end of file diff --git a/src/views/history/job.ts b/src/views/history/job.ts index 4698e27..d4bc840 100644 --- a/src/views/history/job.ts +++ b/src/views/history/job.ts @@ -9,7 +9,7 @@ export default class JobTreeItem extends TreeItem implements GithubLocalActionsT job: Job; constructor(public workspaceFolder: WorkspaceFolder, job: Job) { - super(job.name, TreeItemCollapsibleState.Expanded); + super(job.name, job.status === HistoryStatus.Skipped ? TreeItemCollapsibleState.None : TreeItemCollapsibleState.Expanded); this.job = job; let endTime: string | undefined;