Skip to content

Commit c8fbe05

Browse files
committed
update jira status script
1 parent fa98de5 commit c8fbe05

File tree

1 file changed

+33
-61
lines changed

1 file changed

+33
-61
lines changed

update_jira/index.js

Lines changed: 33 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -53,38 +53,58 @@ async function run() {
5353
}
5454

5555
/**
56-
* Handle PR events - draft changes, ready for review, etc.
56+
* Handle pull request events (open, close, etc)
5757
*/
58-
async function handlePullRequestEvent(eventData, jiraUtil, githubRepository) {
59-
console.log('HANDLING PR EVENT')
58+
async function handlePullRequestEvent(eventData, jiraUtil) {
6059
const { action, pull_request } = eventData
61-
const [_, repositoryName] = githubRepository.split('/')
6260

63-
const prUrl = `${repositoryName}/pull/${pull_request.number}`
64-
let targetStatus = null
61+
const issueKeys = extractJiraIssueKeys(pull_request)
62+
if (issueKeys.length === 0) {
63+
console.log('No Jira issue keys found in PR')
64+
return
65+
}
6566

66-
console.log('action:', action)
67+
console.log(`Found Jira issues: ${issueKeys.join(', ')}`)
68+
69+
let targetStatus = null
70+
const targetBranch = pull_request.base.ref
6771

6872
switch (action) {
73+
case 'opened':
74+
case 'reopened':
75+
case 'ready_for_review':
76+
targetStatus = 'Code Review'
77+
break
6978
case 'converted_to_draft':
7079
targetStatus = 'In Development'
7180
break
72-
case 'ready_for_review':
73-
targetStatus = 'Code Review'
7481
case 'synchronize': {
7582
if (!pull_request.draft) {
7683
targetStatus = 'Code Review'
7784
}
7885
break
7986
}
87+
case 'closed':
88+
if (pull_request.merged) {
89+
targetStatus = statusMap[targetBranch] || 'Done'
90+
} else {
91+
console.log('PR closed without merging, skipping status update')
92+
return
93+
}
94+
break
8095
default:
81-
console.log(`No status update needed for PR action: ${action}`)
82-
return
96+
console.log('No status updates for action:', action)
97+
break
8398
}
8499

85100
if (targetStatus) {
86-
console.log(`Updating issues mentioning PR ${prUrl} to status: ${targetStatus}`)
87-
await jiraUtil.updateByPR(prUrl, targetStatus)
101+
for (const issueKey of issueKeys) {
102+
try {
103+
await jiraUtil.transitionIssue(issueKey, targetStatus)
104+
} catch (error) {
105+
console.error(`Failed to update ${issueKey}:`, error.message)
106+
}
107+
}
88108
}
89109
}
90110

@@ -163,51 +183,3 @@ function extractJiraIssueKeys(pullRequest) {
163183
return Array.from(keys)
164184
}
165185

166-
/**
167-
* Handle PR-specific Jira updates
168-
* @param {Object} eventData - GitHub event data
169-
* @param {Jira} jiraUtil - Jira utility instance
170-
*/
171-
async function handlePullRequestEvent(eventData, jiraUtil) {
172-
const { action, pull_request } = eventData
173-
174-
const issueKeys = extractJiraIssueKeys(pull_request)
175-
if (issueKeys.length === 0) {
176-
console.log('No Jira issue keys found in PR')
177-
return
178-
}
179-
180-
console.log(`Found Jira issues: ${issueKeys.join(', ')}`)
181-
182-
let targetStatus = null
183-
const targetBranch = pull_request.base.ref
184-
185-
switch (action) {
186-
case 'opened':
187-
case 'reopened':
188-
case 'ready_for_review':
189-
targetStatus = 'Code Review'
190-
break
191-
case 'converted_to_draft':
192-
targetStatus = 'In Development'
193-
break
194-
case 'closed':
195-
if (pull_request.merged) {
196-
targetStatus = statusMap[targetBranch] || 'Done'
197-
} else {
198-
console.log('PR closed without merging, skipping status update')
199-
return
200-
}
201-
break
202-
}
203-
204-
if (targetStatus) {
205-
for (const issueKey of issueKeys) {
206-
try {
207-
await jiraUtil.transitionIssue(issueKey, targetStatus)
208-
} catch (error) {
209-
console.error(`Failed to update ${issueKey}:`, error.message)
210-
}
211-
}
212-
}
213-
}

0 commit comments

Comments
 (0)