-
Notifications
You must be signed in to change notification settings - Fork 8
168 lines (147 loc) · 6.87 KB
/
intake.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
name: Intake
# responsible for watching issues come in from the
# intake form and creating a new pr based on the
# form field data
on:
issues:
types: [opened, reopened]
issue_comment:
types: [created]
jobs:
planner:
name: Determine which jobs to run
runs-on: ubuntu-latest
# To keep it simple name the step and output the same as job
outputs:
SHOULD_RUN: ${{ steps.detect.outputs.SHOULD_RUN }}
IS_EVENT: ${{ steps.detect.outputs.IS_EVENT }}
IS_TALK: ${{ steps.detect.outputs.IS_TALK }}
IS_COMMENT: ${{ steps.detect.outputs.IS_COMMENT }}
IS_ISSUE: ${{ steps.detect.outputs.IS_ISSUE }}
steps:
- id: detect
run: |
IS_TALK=$(echo "${{ contains(github.event.issue.labels.*.name, 'talk-submission') }}")
IS_EVENT=$(echo "${{ contains(github.event.issue.labels.*.name, 'event-submission') }}")
IS_COMMENT=$(echo "${{ github.event_name == 'issue_comment' && github.event.comment.body == '.create-pr' }}")
IS_ISSUE=$(echo "${{ github.event_name == 'issues' }}")
echo "IS_TALK=$IS_TALK" >> $GITHUB_OUTPUT
echo "IS_EVENT=$IS_EVENT" >> $GITHUB_OUTPUT
echo "IS_COMMENT=$IS_COMMENT" >> $GITHUB_OUTPUT
echo "IS_ISSUE=$IS_ISSUE" >> $GITHUB_OUTPUT
echo "SHOULD_RUN=false" >> $GITHUB_OUTPUT
if [ "$IS_TALK" = "true" ] || [ "$IS_EVENT" = "true" ]; then
if [ "$IS_COMMENT" = "true" ] || [ "$IS_ISSUE" = "true" ]; then
echo "SHOULD_RUN=true" >> $GITHUB_OUTPUT
fi
fi
process-issue:
runs-on: ubuntu-latest
needs: planner
if: needs.planner.outputs.SHOULD_RUN == 'true'
env:
GH_TOKEN: ${{ github.token }}
steps:
- run: |
echo ${{needs.planner.outputs.SHOULD_RUN}}
echo ${{needs.planner.outputs.IS_EVENT}}
echo ${{needs.planner.outputs.IS_TALK}}
- uses: actions/checkout@v3
- name: Pre Issue Comment
if: github.event_name == 'issue_comment' || github.event_name == 'issues'
run: |
echo "🎉 Thank you for submitting a talk!" >> comment.txt
echo "The next few comments are going to be about autogenerating a pull request to get you added to the roster." >> comment.txt
echo "" >> comment.txt
echo "🫡 initating intake.yml workflow" >> comment.txt
echo "Running workflow ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" >> comment.txt
gh issue comment ${{ github.event.issue.number }} -F comment.txt
rm comment.txt
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '20' # Set this to the node version you are using
- name: Get npm cache directory
id: npm-cache-dir
shell: bash
run: echo "dir=$(npm config get cache)" >> ${GITHUB_OUTPUT}
- uses: actions/cache@v3
id: npm-cache # use this to check for `cache-hit` ==> if: steps.npm-cache.outputs.cache-hit != 'true'
with:
path: ${{ steps.npm-cache-dir.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- run: npm i
- name: Run script and capture output
if: github.event_name == 'issue_comment' || github.event_name == 'issues'
id: issueForm
run: ./script/commentbody ${{ github.event.issue.number }}
- name: Initial Issue Comment
env:
JSON: ${{ toJSON(steps.issueForm.outputs) }}
if: github.event_name == 'issue_comment' || github.event_name == 'issues'
run: |
echo "Running workflow ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" >> comment.txt
echo "Here are the changes, they will be merged:" >> comment.txt
echo '```json' >> comment.txt
echo "${JSON}" >> comment.txt # Ensure proper quoting of JSON
echo '```' >> comment.txt
echo "Keep in mind ☝️ this hasn't yet been validated / sanitized." >> comment.txt
gh issue comment ${{ github.event.issue.number }} -F comment.txt
rm comment.txt
- env:
JSON: ${{ toJSON(steps.issueForm.outputs) }}
run: echo ${JSON}
- run: npm i
- if: needs.planner.outputs.IS_TALK == 'true'
run: |
gh issue edit ${{ github.event.issue.number }} --title "[Talk Submission] ${{ steps.issueForm.outputs.name }}"
- if: needs.planner.outputs.IS_EVENT == 'true'
run: |
gh issue edit ${{ github.event.issue.number }} --title "[Event Submission] ${{ steps.issueForm.outputs.date }}"
- name: Operation
run: |
./script/mkall \
--updateAll \
--date "${{ steps.issueForm.outputs.date }}" \
--githubUsername "${{ steps.issueForm.outputs.githubUsername }}" \
--googleCal "${{ steps.issueForm.outputs.googleCal }}" \
--ical "${{ steps.issueForm.outputs.ical }}" \
--linkedin "${{ steps.issueForm.outputs.linkedin }}" \
--meetup "${{ steps.issueForm.outputs.meetup }}" \
--name "${{ steps.issueForm.outputs.name }}" \
--presentations "${{ steps.issueForm.outputs.presentations }}" \
--profileImage "${{ steps.issueForm.outputs.profileImage }}" \
--slides "${{ steps.issueForm.outputs.slides }}" \
--slidesSource "${{ steps.issueForm.outputs.slidesSource }}" \
--presentationTitle "${{ steps.issueForm.outputs.presentationTitle }}" \
--eventTitle "${{ steps.issueForm.outputs.eventTitle }}" \
--website "${{ steps.issueForm.outputs.website }}"
git config user.name "github-actions"
git config user.email "github-actions@github.com"
git add .
- run: |
if [ -z $(git status --porcelain) ]; then
gh issue comment ${{ github.event.issue.number }} -b "No changes detected, exiting."
exit 1
fi
- id: op
run: |
git commit -m "Automated Content Changes"
git diff HEAD^ HEAD > changes.patch
echo "hash=$(sha256sum changes.patch | awk '{ print $1 }')" >> $GITHUB_OUTPUT
rm changes.patch
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
id: cpr
with:
title: '[Talk PR] ${{ steps.issueForm.outputs.name }}'
body: '[Talk PR] ${{ steps.issueForm.outputs.name }}'
branch: auto-${{ steps.op.outputs.hash}}
- name: Follow Issue Comment
if: github.event_name == 'issue_comment' || github.event_name == 'issues'
run: |
echo "[Talk PR] ${{ steps.issueForm.outputs.name }} ${{ steps.cpr.outputs.pull-request-url }}" >> comment.txt
gh issue comment ${{ github.event.issue.number }} -F comment.txt
rm comment.txt