11// @ts -check
2- /// <reference types="@actions/github-script" />
32
43/**
54 * Run Status Message Module
109
1110const { getMessages, renderTemplate, toSnakeCase } = require ( "./messages_core.cjs" ) ;
1211
12+ /**
13+ * Renders a message using a custom template from config or a default template.
14+ * @param {string } messageKey - Key in the messages config (e.g., "runStarted")
15+ * @param {string } defaultTemplate - Default template string with {placeholder} syntax
16+ * @param {Object } ctx - Context object for template substitution
17+ * @returns {string } Rendered message
18+ */
19+ function renderConfiguredMessage ( messageKey , defaultTemplate , ctx ) {
20+ const messages = getMessages ( ) ;
21+ const template = messages ?. [ messageKey ] ?? defaultTemplate ;
22+ return renderTemplate ( template , toSnakeCase ( ctx ) ) ;
23+ }
24+
1325/**
1426 * @typedef {Object } RunStartedContext
1527 * @property {string } workflowName - Name of the workflow
@@ -23,16 +35,7 @@ const { getMessages, renderTemplate, toSnakeCase } = require("./messages_core.cj
2335 * @returns {string } Run-started message
2436 */
2537function getRunStartedMessage ( ctx ) {
26- const messages = getMessages ( ) ;
27-
28- // Create context with both camelCase and snake_case keys
29- const templateContext = toSnakeCase ( ctx ) ;
30-
31- // Default run-started template
32- const defaultMessage = "🚀 [{workflow_name}]({run_url}) has started processing this {event_type}" ;
33-
34- // Use custom message if configured
35- return messages ?. runStarted ? renderTemplate ( messages . runStarted , templateContext ) : renderTemplate ( defaultMessage , templateContext ) ;
38+ return renderConfiguredMessage ( "runStarted" , "🚀 [{workflow_name}]({run_url}) has started processing this {event_type}" , ctx ) ;
3639}
3740
3841/**
@@ -47,16 +50,7 @@ function getRunStartedMessage(ctx) {
4750 * @returns {string } Run-success message
4851 */
4952function getRunSuccessMessage ( ctx ) {
50- const messages = getMessages ( ) ;
51-
52- // Create context with both camelCase and snake_case keys
53- const templateContext = toSnakeCase ( ctx ) ;
54-
55- // Default run-success template
56- const defaultMessage = "✅ [{workflow_name}]({run_url}) completed successfully!" ;
57-
58- // Use custom message if configured
59- return messages ?. runSuccess ? renderTemplate ( messages . runSuccess , templateContext ) : renderTemplate ( defaultMessage , templateContext ) ;
53+ return renderConfiguredMessage ( "runSuccess" , "✅ [{workflow_name}]({run_url}) completed successfully!" , ctx ) ;
6054}
6155
6256/**
@@ -72,16 +66,7 @@ function getRunSuccessMessage(ctx) {
7266 * @returns {string } Run-failure message
7367 */
7468function getRunFailureMessage ( ctx ) {
75- const messages = getMessages ( ) ;
76-
77- // Create context with both camelCase and snake_case keys
78- const templateContext = toSnakeCase ( ctx ) ;
79-
80- // Default run-failure template
81- const defaultMessage = "❌ [{workflow_name}]({run_url}) {status}. Please review the logs for details." ;
82-
83- // Use custom message if configured
84- return messages ?. runFailure ? renderTemplate ( messages . runFailure , templateContext ) : renderTemplate ( defaultMessage , templateContext ) ;
69+ return renderConfiguredMessage ( "runFailure" , "❌ [{workflow_name}]({run_url}) {status}. Please review the logs for details." , ctx ) ;
8570}
8671
8772/**
@@ -96,16 +81,7 @@ function getRunFailureMessage(ctx) {
9681 * @returns {string } Detection-failure message
9782 */
9883function getDetectionFailureMessage ( ctx ) {
99- const messages = getMessages ( ) ;
100-
101- // Create context with both camelCase and snake_case keys
102- const templateContext = toSnakeCase ( ctx ) ;
103-
104- // Default detection-failure template
105- const defaultMessage = "⚠️ Security scanning failed for [{workflow_name}]({run_url}). Review the logs for details." ;
106-
107- // Use custom message if configured
108- return messages ?. detectionFailure ? renderTemplate ( messages . detectionFailure , templateContext ) : renderTemplate ( defaultMessage , templateContext ) ;
84+ return renderConfiguredMessage ( "detectionFailure" , "⚠️ Security scanning failed for [{workflow_name}]({run_url}). Review the logs for details." , ctx ) ;
10985}
11086
11187/**
@@ -120,10 +96,7 @@ function getDetectionFailureMessage(ctx) {
12096 * @returns {string } Pull-request-created message
12197 */
12298function getPullRequestCreatedMessage ( ctx ) {
123- const messages = getMessages ( ) ;
124- const templateContext = toSnakeCase ( ctx ) ;
125- const defaultMessage = "Pull request created: [#{item_number}]({item_url})" ;
126- return messages ?. pullRequestCreated ? renderTemplate ( messages . pullRequestCreated , templateContext ) : renderTemplate ( defaultMessage , templateContext ) ;
99+ return renderConfiguredMessage ( "pullRequestCreated" , "Pull request created: [#{item_number}]({item_url})" , ctx ) ;
127100}
128101
129102/**
@@ -138,10 +111,7 @@ function getPullRequestCreatedMessage(ctx) {
138111 * @returns {string } Issue-created message
139112 */
140113function getIssueCreatedMessage ( ctx ) {
141- const messages = getMessages ( ) ;
142- const templateContext = toSnakeCase ( ctx ) ;
143- const defaultMessage = "Issue created: [#{item_number}]({item_url})" ;
144- return messages ?. issueCreated ? renderTemplate ( messages . issueCreated , templateContext ) : renderTemplate ( defaultMessage , templateContext ) ;
114+ return renderConfiguredMessage ( "issueCreated" , "Issue created: [#{item_number}]({item_url})" , ctx ) ;
145115}
146116
147117/**
@@ -157,10 +127,7 @@ function getIssueCreatedMessage(ctx) {
157127 * @returns {string } Commit-pushed message
158128 */
159129function getCommitPushedMessage ( ctx ) {
160- const messages = getMessages ( ) ;
161- const templateContext = toSnakeCase ( ctx ) ;
162- const defaultMessage = "Commit pushed: [`{short_sha}`]({commit_url})" ;
163- return messages ?. commitPushed ? renderTemplate ( messages . commitPushed , templateContext ) : renderTemplate ( defaultMessage , templateContext ) ;
130+ return renderConfiguredMessage ( "commitPushed" , "Commit pushed: [`{short_sha}`]({commit_url})" , ctx ) ;
164131}
165132
166133module . exports = {
0 commit comments