This commit is contained in:
Untone 2025-02-19 00:36:51 +03:00
parent da837923b6
commit c6e0e0349c
3 changed files with 63 additions and 30 deletions

View File

@ -6,6 +6,7 @@
*/ */
const getCommitEmoji = (message, stats) => { const getCommitEmoji = (message, stats) => {
const msg = message.toLowerCase() const msg = message.toLowerCase()
if (msg.includes('merge')) return '📎'
if (msg.includes('fix')) return '🔧' if (msg.includes('fix')) return '🔧'
if (msg.includes('feat')) return '✨' if (msg.includes('feat')) return '✨'
if (msg.includes('break')) return '💥' if (msg.includes('break')) return '💥'
@ -66,7 +67,7 @@ const formatMessage = (data, commits) => {
const stats = formatStats(totalStats) const stats = formatStats(totalStats)
return [ return [
`🔄 [${repoId}](${repoUrl}):[${branch}](${branchUrl}) ${commits.length} new commit${commits.length === 1 ? '' : 's'}`, `🔄 [${repoId}](${repoUrl}):[${branch}](${branchUrl}) ${commits.length} new commit${Array.from(commits.length.toString()).pop() === '1' ? '' : 's'}`,
stats && commits.length > 1 ? `📊 ${stats}` : '', stats && commits.length > 1 ? `📊 ${stats}` : '',
commits.map(commit => formatCommit(commit, repoUrl)).join('\n') commits.map(commit => formatCommit(commit, repoUrl)).join('\n')
].filter(Boolean).join('\n') ].filter(Boolean).join('\n')

View File

@ -1,25 +1,41 @@
const { formatMessage } = require('./formatters') const { formatMessage } = require('./formatters')
/** /**
* Handle Gitea webhook * Normalize Gitea webhook payload to common format
* @param {Object} payload - Gitea webhook payload * @param {Object} payload - Gitea webhook payload
* @returns {Object} - Normalized webhook data * @returns {Object} - Normalized webhook data
*/ */
const normalizeGiteaPayload = (payload) => ({ const normalizeGiteaPayload = (payload) => {
repository: { // Early return if no commits
full_name: payload.repository.full_name, if (!Array.isArray(payload.commits)) {
html_url: payload.repository.html_url || payload.repository.url return {
}, repository: {
ref: payload.ref, full_name: payload.repository.full_name,
commits: payload.commits.map(commit => ({ html_url: payload.repository.html_url || payload.repository.url,
id: commit.id, id: payload.repository.id
message: commit.message, },
stats: { ref: payload.ref,
additions: commit.added?.length || 0, commits: []
deletions: commit.removed?.length || 0
} }
})) }
})
return {
repository: {
full_name: payload.repository.full_name,
html_url: payload.repository.html_url || payload.repository.url,
id: payload.repository.id
},
ref: payload.ref,
commits: payload.commits.map(commit => ({
id: commit.id,
message: commit.message,
stats: {
additions: commit.added?.length || 0,
deletions: commit.removed?.length || 0
}
}))
}
}
/** /**
* Handle Gitea webhook * Handle Gitea webhook

View File

@ -5,21 +5,37 @@ const { formatMessage } = require('./formatters')
* @param {Object} payload - GitHub webhook payload * @param {Object} payload - GitHub webhook payload
* @returns {Object} - Normalized webhook data * @returns {Object} - Normalized webhook data
*/ */
const normalizeGithubPayload = (payload) => ({ const normalizeGithubPayload = (payload) => {
repository: { // Early return if no commits
full_name: payload.repository.full_name, if (!Array.isArray(payload.commits)) {
html_url: payload.repository.html_url return {
}, repository: {
ref: payload.ref, full_name: payload.repository.full_name,
commits: payload.commits.map(commit => ({ html_url: payload.repository.html_url,
id: commit.id, id: payload.repository.id
message: commit.message, },
stats: { ref: payload.ref,
additions: commit.stats?.additions || 0, commits: []
deletions: commit.stats?.deletions || 0
} }
})) }
})
return {
repository: {
full_name: payload.repository.full_name,
html_url: payload.repository.html_url,
id: payload.repository.id
},
ref: payload.ref,
commits: payload.commits.map(commit => ({
id: commit.id,
message: commit.message,
stats: {
additions: commit.stats?.additions || 0,
deletions: commit.stats?.deletions || 0
}
}))
}
}
/** /**
* Handle GitHub webhook * Handle GitHub webhook