Skip to content

Commit 0ac6478

Browse files
authored
Merge pull request #4 from LOAD-Robotics/development
Merge Tower Hill Scrimmage Code to Master Branch
2 parents 387ea7e + ba2ec14 commit 0ac6478

41 files changed

Lines changed: 6443 additions & 715 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
name: Disable auto-reopen after second close
2+
3+
on:
4+
pull_request:
5+
types: [closed]
6+
7+
permissions:
8+
issues: write
9+
pull-requests: write
10+
11+
jobs:
12+
disable:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Disable automatic reopen
16+
uses: actions/github-script@v7
17+
with:
18+
script: |
19+
const pr = context.payload.pull_request;
20+
21+
// Ignore merged PRs
22+
if (pr.merged) return;
23+
24+
const labels = pr.labels.map(l => l.name);
25+
26+
// Only act if it was previously reopened once
27+
if (!labels.includes('reopen-used')) return;
28+
29+
// Mark auto-reopen as permanently disabled
30+
await github.rest.issues.addLabels({
31+
owner: context.repo.owner,
32+
repo: context.repo.repo,
33+
issue_number: pr.number,
34+
labels: ['reopen-locked']
35+
});
36+
37+
await github.rest.issues.createComment({
38+
owner: context.repo.owner,
39+
repo: context.repo.repo,
40+
issue_number: pr.number,
41+
body:
42+
"This PR was reopened once and then closed again.\n\n" +
43+
"Automatic reopening via `/not-a-mistake` is now disabled.\n" +
44+
"Maintainers may still reopen this PR manually if needed."
45+
});

.github/workflows/mistake-pr.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: Auto-close mistake PRs
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened]
6+
7+
permissions:
8+
issues: write
9+
pull-requests: write
10+
11+
jobs:
12+
detect:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Detect mistake PR
16+
uses: actions/github-script@v7
17+
with:
18+
script: |
19+
const pr = context.payload.pull_request;
20+
const labels = pr.labels.map(l => l.name);
21+
22+
// Skip if auto-reopen is disabled or already used
23+
if (labels.includes('reopen-used') || labels.includes('reopen-locked')) {
24+
return;
25+
}
26+
27+
// Get changed files
28+
const files = await github.paginate(
29+
github.rest.pulls.listFiles,
30+
{
31+
owner: context.repo.owner,
32+
repo: context.repo.repo,
33+
pull_number: pr.number,
34+
}
35+
);
36+
37+
// Detect newly added OR copied files
38+
const hasNewFiles = files.some(
39+
f => f.status === 'added' || f.status === 'copied'
40+
);
41+
42+
if (!hasNewFiles) return;
43+
44+
// Label as mistake PR
45+
await github.rest.issues.addLabels({
46+
owner: context.repo.owner,
47+
repo: context.repo.repo,
48+
issue_number: pr.number,
49+
labels: ['mistake-pr']
50+
});
51+
52+
// Explain and close
53+
await github.rest.issues.createComment({
54+
owner: context.repo.owner,
55+
repo: context.repo.repo,
56+
issue_number: pr.number,
57+
body:
58+
"This PR was automatically closed because it adds new files.\n\n" +
59+
"If this is intentional, comment `/not-a-mistake` **once** to reopen it."
60+
});
61+
62+
await github.rest.pulls.update({
63+
owner: context.repo.owner,
64+
repo: context.repo.repo,
65+
pull_number: pr.number,
66+
state: 'closed'
67+
});

.github/workflows/reopen-once.yml

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
name: Reopen mistake PR once
2+
3+
on:
4+
issue_comment:
5+
types: [created]
6+
7+
permissions:
8+
issues: write
9+
pull-requests: write
10+
11+
jobs:
12+
reopen:
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Handle /not-a-mistake
16+
uses: actions/github-script@v7
17+
with:
18+
script: |
19+
const comment = context.payload.comment;
20+
const issue = context.payload.issue;
21+
22+
if (!issue.pull_request) return;
23+
if (comment.body.trim() !== '/not-a-mistake') return;
24+
25+
const pr = await github.rest.pulls.get({
26+
owner: context.repo.owner,
27+
repo: context.repo.repo,
28+
pull_number: issue.number
29+
});
30+
31+
const labels = pr.data.labels.map(l => l.name);
32+
33+
// Only PR author may use this
34+
if (comment.user.login !== pr.data.user.login) {
35+
return;
36+
}
37+
38+
// Must be closed and labeled mistake-pr
39+
if (pr.data.state !== 'closed') return;
40+
if (!labels.includes('mistake-pr')) return;
41+
42+
// Auto-reopen already disabled
43+
if (labels.includes('reopen-used') || labels.includes('reopen-locked')) {
44+
await github.rest.issues.createComment({
45+
owner: context.repo.owner,
46+
repo: context.repo.repo,
47+
issue_number: issue.number,
48+
body:
49+
"Automatic reopening is disabled for this PR.\n\n" +
50+
"A maintainer may still reopen it manually if needed."
51+
});
52+
return;
53+
}
54+
55+
// Mark reopen as used FIRST (prevents race)
56+
await github.rest.issues.addLabels({
57+
owner: context.repo.owner,
58+
repo: context.repo.repo,
59+
issue_number: issue.number,
60+
labels: ['reopen-used']
61+
});
62+
63+
await github.rest.issues.removeLabel({
64+
owner: context.repo.owner,
65+
repo: context.repo.repo,
66+
issue_number: issue.number,
67+
name: 'mistake-pr'
68+
});
69+
70+
await github.rest.pulls.update({
71+
owner: context.repo.owner,
72+
repo: context.repo.repo,
73+
pull_number: issue.number,
74+
state: 'open'
75+
});
76+
77+
await github.rest.issues.createComment({
78+
owner: context.repo.owner,
79+
repo: context.repo.repo,
80+
issue_number: issue.number,
81+
body:
82+
"PR reopened.\n\n" +
83+
"If this PR is closed again, automatic reopening will be disabled."
84+
});

Diagrams/.obsidian/app.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}

Diagrams/.obsidian/appearance.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"file-explorer": true,
3+
"global-search": true,
4+
"switcher": true,
5+
"graph": true,
6+
"backlink": true,
7+
"canvas": true,
8+
"outgoing-link": true,
9+
"tag-pane": true,
10+
"footnotes": false,
11+
"properties": true,
12+
"page-preview": true,
13+
"daily-notes": true,
14+
"templates": true,
15+
"note-composer": true,
16+
"command-palette": true,
17+
"slash-command": false,
18+
"editor-status": true,
19+
"bookmarks": true,
20+
"markdown-importer": false,
21+
"zk-prefixer": false,
22+
"random-note": false,
23+
"outline": true,
24+
"word-count": true,
25+
"slides": false,
26+
"audio-recorder": false,
27+
"workspaces": false,
28+
"file-recovery": true,
29+
"publish": false,
30+
"sync": true,
31+
"bases": true,
32+
"webviewer": false
33+
}

0 commit comments

Comments
 (0)