-
Notifications
You must be signed in to change notification settings - Fork 4
96 lines (83 loc) · 3.43 KB
/
decision.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
name: Create Branch and PR from Issue Label
on:
issues:
types: [labeled]
jobs:
create_branch_and_pr:
if: github.event.label.name == 'decision'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Authorization
env:
ACTOR: ${{ github.actor }}
run: |
# Get username of GitHub account that triggered this flow
opener=$ACTOR
# Get list of approved contributors
contributors=$(curl https://api.github.com/repos/Monstarrrr/Rebutify/contributors | jq -r '[.[] | select(.type == "User") | .login] | join(",")')
# Convert the comma-separated string to an array
IFS=',' read -r -a contributor_array <<< "$contributors"
# Check if triggering user is in the array
if [[ ! " ${contributor_array[@]} " =~ " $opener " ]]; then
echo "Triggering user is unauthorized."
exit 1
fi
# Fetch the repository contents to ensure the latest code is available
- name: Checkout
uses: actions/[email protected]
- name: Extract subject and category from issue title
id: extract_info
env:
TITLE: ${{ github.event.issue.title }}
run: |
title="$TITLE"
if [[ "$title" =~ ^Opening\ decision\ on\ ([^/]+)(/([^/]+))?$ ]]; then
subject=$(echo "${BASH_REMATCH[3]}" | tr -d ' ')
category=$(echo "${BASH_REMATCH[1]}" | tr -d ' ')
if [[ -z "$category" ]]; then
category=""
fi
echo "subject=$subject" >> $GITHUB_ENV
echo "category=$category" >> $GITHUB_ENV
else
echo "Issue title does not follow the required format: 'Opening decision on [category]/[subject]'"
exit 1
fi
- name: Create new branch
id: new_branch
env:
ISSUE_NUMBER: ${{ github.event.issue.number }}
ISSUE_TITLE: ${{ github.event.issue.title }}
run: |
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git checkout -b "docs/${ISSUE_NUMBER}_decision-$subject"
# Determine the directory structure
if [[ -z "$category" ]]; then
dir_path="docs/decisions"
else
dir_path="docs/decisions/$category"
fi
echo "The directory path is: $dir_path"
# Create the directory structure for the documentation
mkdir -p "$dir_path"
# Create a new markdown file with the decision template as content
cat docs/decisions/_template.md > "$dir_path/${subject}_DECISION.md"
echo "The decision file has been created: $dir_path/${subject}_DECISION.md"
git add .
echo "Committing changes..."
git commit -m "$ISSUE_TITLE"
echo "Pushing changes..."
git push origin "docs/${ISSUE_NUMBER}_decision-$subject"
echo "subject=$subject" >> $GITHUB_OUTPUT
git status
git branch
git log --oneline -n 3
- name: Create Pull Request
run: |
gh pr create --base main --head "docs/${ISSUE_NUMBER}_decision-${subject}" --draft --label decision --label documentation --title "Add documentation for decision: ${ISSUE_TITLE}" --body "Created by Github action from ${ISSUE_NUMBER}"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}