1
- name : Verify Redirects
2
-
1
+ name : Add Redirects
3
2
on :
4
3
pull_request_target :
5
-
6
4
jobs :
7
- verify -redirects :
8
- name : Verifying Redirects
5
+ add -redirects :
6
+ name : Get Redirects for Modified Files
9
7
runs-on : ubuntu-latest
10
- env :
11
- REDIRECTS_FILE : " config/redirects"
12
8
permissions :
13
9
pull-requests : write
14
10
steps :
15
- - name : Check Out Base Branch
16
- uses : actions/checkout@v4
17
-
11
+ - uses : actions/checkout@v4
18
12
- name : Get Changed Files
19
13
id : changed-files
20
14
uses : tj-actions/changed-files@c65cd883420fd2eb864698a825fc4162dd94482c
21
15
with :
22
16
include_all_old_new_renamed_files : true
23
-
24
- - name : Find Missing Redirects for Renamed Files
17
+ - name : Make Redirects for Renamed Files
25
18
id : renamed-files
26
19
if : steps.changed-files.outputs.renamed_files_count > 0
27
20
env :
28
21
RENAMED_FILES : ${{ steps.changed-files.outputs.all_old_new_renamed_files }}
29
22
run : |
30
- renamed_redirects=()
23
+ renamed_redirects=""
31
24
for file in $RENAMED_FILES; do
32
-
33
- # only run for .txt files
34
25
if [[ ! "$file" == *.txt ]]; then
35
26
continue
36
27
fi
37
-
38
- # format old and new URLs
39
28
old=$(echo "$file" | cut -d',' -f1)
40
29
old="${old#source}"
41
30
old="${old%.txt}"
42
31
new=$(echo "$file" | cut -d',' -f2)
43
32
new="${new#source}"
44
33
new="${new%.txt}"
45
-
46
- # single quotes = ${var} rendered literally; double quotes = $var interpreted
47
- renamed_redirect='${prefix}/${version}'"$old"'/ -> ${base}/${version}'"$new"'/'
48
-
49
- # if redirect not already in file, add to array to add to PR description
50
- if ! grep -q "$renamed_redirect" $REDIRECTS_FILE; then
51
- renamed_redirects+=("$renamed_redirect")
52
- fi
34
+ #single quotes = ${var} rendered literally; double quotes = $var interpreted
35
+ renamed_redirects+='<li>[<v>-*]: ${prefix}/${version}'"$old"'/ -> ${base}/${version}'"$new"'/</li>'
53
36
done
54
37
echo "redirects=${renamed_redirects}" >> "$GITHUB_OUTPUT"
55
-
56
- - name : Find Missing Redirects for Deleted Files
38
+ - name : Make Redirects for Deleted Files
57
39
id : deleted-files
58
40
if : steps.changed-files.outputs.deleted_files_count > 0
59
41
env :
60
42
DELETED_FILES : ${{ steps.changed-files.outputs.deleted_files }}
61
43
run : |
62
- deleted_redirects=()
44
+ deleted_redirects=""
63
45
for file in $DELETED_FILES; do
64
-
65
- # only run for .txt files
66
46
if [[ ! "$file" == *.txt ]]; then
67
47
continue
68
48
fi
69
-
70
- # format old URL
71
49
old=$(echo "$file" | cut -d',' -f1)
72
50
old="${old#source}"
73
51
old="${old%.txt}"
74
-
75
- # single quotes = ${var} rendered literally; double quotes = $var interpreted
76
- deleted_redirect='${prefix}/${version}'"$old"'/ -> ${base}/${version}/'
77
-
78
- # if redirect not already in file, add to array to add to PR description
79
- if ! grep -q "$deleted_redirect" $REDIRECTS_FILE; then
80
- deleted_redirects+=("$deleted_redirect")
81
- fi
82
-
52
+ deleted_redirects+='<li>[<v>-*]: ${prefix}/${version}'"$old"'/ -> ${base}/${version}/</li>'
83
53
done
84
54
echo "redirects=${deleted_redirects}" >> "$GITHUB_OUTPUT"
85
-
86
- - name : Build Redirect HTML
87
- id : build-redirect-html
88
- env :
89
- RENAMED_REDIRECTS : ${{ steps.renamed-files.outputs.redirects }}
90
- DELETED_REDIRECTS : ${{ steps.deleted-files.outputs.redirects }}
91
- run : |
92
- # empty string that stays empty if there are no redirects to suggest
93
- redirect_html=""
94
-
95
- for renamed_redirect in "${RENAMED_REDIRECTS[@]}"; do
96
- redirect_html+="<li>[<v>-*]: $renamed_redirect</li>"
97
- done
98
-
99
- for deleted_redirect in "${DELETED_REDIRECTS[@]}"; do
100
- redirect_html+="<li>[<v>-*]: $deleted_redirect</li>"
101
- done
102
-
103
- echo "redirect_html=${redirect_html}" >> "$GITHUB_OUTPUT"
104
-
105
55
- name : Update PR Description
106
- if : steps.build-redirect-html .outputs.redirect_html
56
+ if : steps.changed-files.outputs.renamed_files_count > 0 || steps.changed-files .outputs.deleted_files_count > 0
107
57
uses : MongoCaleb/pr-description-action@4bdfe35b98f64532b419ad20b350a92546cd3aa1
108
- env :
109
- REDIRECT_HTML : ${{ steps.build-redirect-html.outputs.redirect_html }}
110
58
with :
111
59
regex : " - \\ [ \\ ] Did you add redirects\\ ?.*"
112
60
appendContentOnMatchOnly : false
113
61
regexFlags : is
114
- content : " - [ ] Did you add redirects?\n *Suggested redirects for moved/deleted files (replace <v> with earliest backport target version):*\n ${{ steps.build-redirect-html.outputs.redirect_html }}\n "
115
- token : ${{ secrets.GITHUB_TOKEN }}
116
-
117
- - name : Check for duplicates in redirects file
118
- run : |
119
- # Specify the file to check
120
- file="$REDIRECTS_FILE"
121
-
122
- if [[ -f "$file" ]]; then
123
- duplicates=$(sort "$file" | uniq -d)
124
- if [[ -n "$duplicates" ]]; then
125
- echo "Duplicate lines found in $file:"
126
- echo "$duplicates"
127
- exit 1 # error
128
- fi
129
- else
130
- echo "File $file does not exist. Skipping duplicate check."
131
- fi
62
+ content : " - [ ] Did you add redirects?\n *Suggested redirects for moved/deleted files (replace <v> with earliest backport target version):*\n ${{ steps.renamed-files.outputs.redirects }}${{ steps.deleted-files.outputs.redirects }}\n "
63
+ token : ${{ secrets.GITHUB_TOKEN }}
0 commit comments