From 1b069dc94ace16168292e0f3c9889d1b356a7507 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Tue, 10 Dec 2024 09:57:20 +0800 Subject: Make RepoActionView.vue support `##[group]` (#32770) --- web_src/js/components/RepoActionView.vue | 47 ++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 11 deletions(-) (limited to 'web_src/js') diff --git a/web_src/js/components/RepoActionView.vue b/web_src/js/components/RepoActionView.vue index eecbf7ef55..7f647b668a 100644 --- a/web_src/js/components/RepoActionView.vue +++ b/web_src/js/components/RepoActionView.vue @@ -16,8 +16,27 @@ type LogLine = { message: string; }; -const LogLinePrefixGroup = '::group::'; -const LogLinePrefixEndGroup = '::endgroup::'; +const LogLinePrefixesGroup = ['::group::', '##[group]']; +const LogLinePrefixesEndGroup = ['::endgroup::', '##[endgroup]']; + +type LogLineCommand = { + name: 'group' | 'endgroup', + prefix: string, +} + +function parseLineCommand(line: LogLine): LogLineCommand | null { + for (const prefix of LogLinePrefixesGroup) { + if (line.message.startsWith(prefix)) { + return {name: 'group', prefix}; + } + } + for (const prefix of LogLinePrefixesEndGroup) { + if (line.message.startsWith(prefix)) { + return {name: 'endgroup', prefix}; + } + } + return null; +} const sfc = { name: 'RepoActionView', @@ -129,13 +148,13 @@ const sfc = { return el._stepLogsActiveContainer ?? el; }, // begin a log group - beginLogGroup(stepIndex: number, startTime: number, line: LogLine) { + beginLogGroup(stepIndex: number, startTime: number, line: LogLine, cmd: LogLineCommand) { const el = this.$refs.logs[stepIndex]; const elJobLogGroupSummary = createElementFromAttrs('summary', {class: 'job-log-group-summary'}, this.createLogLine(stepIndex, startTime, { index: line.index, timestamp: line.timestamp, - message: line.message.substring(LogLinePrefixGroup.length), + message: line.message.substring(cmd.prefix.length), }), ); const elJobLogList = createElementFromAttrs('div', {class: 'job-log-list'}); @@ -147,13 +166,13 @@ const sfc = { el._stepLogsActiveContainer = elJobLogList; }, // end a log group - endLogGroup(stepIndex: number, startTime: number, line: LogLine) { + endLogGroup(stepIndex: number, startTime: number, line: LogLine, cmd: LogLineCommand) { const el = this.$refs.logs[stepIndex]; el._stepLogsActiveContainer = null; el.append(this.createLogLine(stepIndex, startTime, { index: line.index, timestamp: line.timestamp, - message: line.message.substring(LogLinePrefixEndGroup.length), + message: line.message.substring(cmd.prefix.length), })); }, @@ -201,11 +220,12 @@ const sfc = { appendLogs(stepIndex: number, startTime: number, logLines: LogLine[]) { for (const line of logLines) { const el = this.getLogsContainer(stepIndex); - if (line.message.startsWith(LogLinePrefixGroup)) { - this.beginLogGroup(stepIndex, startTime, line); + const cmd = parseLineCommand(line); + if (cmd?.name === 'group') { + this.beginLogGroup(stepIndex, startTime, line, cmd); continue; - } else if (line.message.startsWith(LogLinePrefixEndGroup)) { - this.endLogGroup(stepIndex, startTime, line); + } else if (cmd?.name === 'endgroup') { + this.endLogGroup(stepIndex, startTime, line, cmd); continue; } el.append(this.createLogLine(stepIndex, startTime, line)); @@ -393,7 +413,7 @@ export function initRepositoryActionView() { - @@ -539,6 +559,11 @@ export function initRepositoryActionView() { overflow-wrap: anywhere; } +.action-info-summary .ui.button { + margin: 0; + white-space: nowrap; +} + .action-commit-summary { display: flex; flex-wrap: wrap; -- cgit v1.2.3