Skip to content

Commit c0008db

Browse files
authored
fix: boolean conditions, order of ops (#23)
1 parent 5293242 commit c0008db

File tree

2 files changed

+64
-60
lines changed

2 files changed

+64
-60
lines changed

action.js

Lines changed: 63 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -139,73 +139,75 @@ module.exports = async (
139139
bail(error.message);
140140
};
141141

142-
// estimate effort if a PR
143-
if (includeEffort) {
144-
// get PR data
145-
const prCommitDataQuery = fs.readFileSync(`${basePath}/graphql/prCommitData.gql`, 'utf8');
146-
const prCommitDataParams = {
147-
owner: context.repo.owner,
148-
name: context.repo.repo,
149-
number: context.payload.pull_request.number
150-
};
151-
let prCommitData
152-
try {
153-
let prAllData = await github.graphql(prCommitDataQuery, prCommitDataParams)
154-
prCommitData = prAllData.repository.pullRequest.commits.nodes
155-
isDraftPr = prAllData.repository.pullRequest.isDraft
156-
} catch (error) {
157-
bail(error.message);
158-
};
159-
160-
// move PR to project
161-
if (!isDraftPr) {
162-
const assignItemQuery = fs.readFileSync(`${basePath}/graphql/projectAssignPrIssue.gql`, 'utf8');
163-
const assignItemParams = {
164-
project: projectId,
165-
id: prIssueId
166-
};
167-
try {
168-
({ addProjectV2ItemById: { item: { id: projectItemId } } } = await github.graphql(assignItemQuery, assignItemParams));
169-
} catch (error) {
170-
bail(error.message);
171-
};
142+
// get PR data
143+
const prCommitDataQuery = fs.readFileSync(`${basePath}/graphql/prCommitData.gql`, 'utf8');
144+
const prCommitDataParams = {
145+
owner: context.repo.owner,
146+
name: context.repo.repo,
147+
number: context.payload.pull_request.number
148+
};
149+
let prCommitData
150+
try {
151+
let prAllData = await github.graphql(prCommitDataQuery, prCommitDataParams)
152+
prCommitData = prAllData.repository.pullRequest.commits.nodes
153+
isDraftPr = prAllData.repository.pullRequest.isDraft
154+
} catch (error) {
155+
bail(error.message);
156+
};
172157

158+
// leave drafts alone
159+
if (isDraftPr){
160+
return
161+
}
173162

174-
// get weekdays since PR's first commit
175-
let prCreatedAt = new Date()
176-
prCommitData.forEach(commit => {
177-
const commitDate = new Date(commit.commit.authoredDate)
178-
if (commitDate < prCreatedAt) {
179-
prCreatedAt = commitDate
180-
}
181-
});
182-
const workingDaysSinceCreated = countWorkingDaysSince(new Date(prCreatedAt));
163+
// move PR to project
164+
const assignItemQuery = fs.readFileSync(`${basePath}/graphql/projectAssignPrIssue.gql`, 'utf8');
165+
const assignItemParams = {
166+
project: projectId,
167+
id: prIssueId
168+
};
169+
try {
170+
({ addProjectV2ItemById: { item: { id: projectItemId } } } = await github.graphql(assignItemQuery, assignItemParams));
171+
} catch (error) {
172+
bail(error.message);
173+
};
183174

184-
// map days spent to effort size pattern
185-
let milestonePattern;
186-
for (const [pattern, dayCount] of Object.entries(JSON.parse(effortMapping))) {
187-
if (workingDaysSinceCreated < dayCount) {
188-
milestonePattern = pattern;
189-
break;
190-
}
191-
};
175+
// estimate effort if a PR
176+
if (includeEffort) {
177+
// get weekdays since PR's first commit
178+
let prCreatedAt = new Date()
179+
prCommitData.forEach(commit => {
180+
const commitDate = new Date(commit.commit.authoredDate)
181+
if (commitDate < prCreatedAt) {
182+
prCreatedAt = commitDate
183+
}
184+
});
185+
const workingDaysSinceCreated = countWorkingDaysSince(new Date(prCreatedAt));
192186

193-
// select effort ID based on pattern
194-
projectFieldOptions.forEach(field => {
195-
if (field.name === effortName) {
196-
effortFieldId = field.id;
197-
field.options.forEach(effort => {
198-
if (effort.name.toLowerCase().includes(milestonePattern.toLowerCase()))
199-
effortValueId = effort.id;
200-
});
201-
};
202-
});
187+
// map days spent to effort size pattern
188+
let milestonePattern;
189+
for (const [pattern, dayCount] of Object.entries(JSON.parse(effortMapping))) {
190+
if (workingDaysSinceCreated < dayCount) {
191+
milestonePattern = pattern;
192+
break;
193+
}
203194
};
195+
196+
// select effort ID based on pattern
197+
projectFieldOptions.forEach(field => {
198+
if (field.name === effortName) {
199+
effortFieldId = field.id;
200+
field.options.forEach(effort => {
201+
if (effort.name.toLowerCase().includes(milestonePattern.toLowerCase()))
202+
effortValueId = effort.id;
203+
});
204+
};
205+
});
204206
};
205207
};
206208

207-
// set milestones & effort
208-
if (includeEffort && (isPr && !isDraftPr)) {
209+
// set milestones & effort if a PR and includeEffort
210+
if (includeEffort && isPr) {
209211
const assignProjectFieldsQuery = fs.readFileSync(`${basePath}/graphql/projectEffortItemAssignFields.gql`, 'utf8');
210212
const assignProjectFieldsParams = {
211213
project: projectId,
@@ -226,7 +228,8 @@ module.exports = async (
226228
};
227229
};
228230

229-
if (!isPr || (!isDraftPr && !includeEffort)) {
231+
// set milestones if an Issue or if a PR and not includeEffort
232+
if (!isPr || !includeEffort) {
230233
const assignProjectFieldsQuery = fs.readFileSync(`${basePath}/graphql/projectNoEffortItemAssignFields.gql`, 'utf8');
231234
const assignProjectFieldsParams = {
232235
project: projectId,

test/.github/workflows/workflow.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ jobs:
2525
token: ${{ secrets.GITHUB_TOKEN }}
2626
label: needs triage
2727
statusName: ${{ env.statusName }}
28+
includeEffort: "false"
2829
statusValue: ${{ env.newItemStatus }}
2930
effortName: ${{ env.effortName }}
3031
effortMapping: ${{ env.effortMapping }}

0 commit comments

Comments
 (0)