Skip to content

Commit ea8405f

Browse files
committed
fix(workflow): enhance file change detection in markdown update workflow
1 parent 7796856 commit ea8405f

File tree

1 file changed

+46
-9
lines changed

1 file changed

+46
-9
lines changed

.github/workflows/on-markdown-update.yml

Lines changed: 46 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,57 @@ jobs:
2121
with:
2222
fetch-depth: 0
2323

24+
25+
- name: Define file masks
26+
id: define-file-masks
27+
run: |
28+
echo "file_masks='README.md'" >> $GITHUB_ENV
29+
2430
- name: Get changed files
2531
id: changed-markdown-files
26-
# Set outputs using the command.
32+
env:
33+
FILE_MASKS: ${{ steps.define-file-masks.outputs.file_masks }}
2734
run: |
28-
git diff --name-only ${{ github.event.before }} ${{ github.event.after }}
29-
git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | grep -c 'README\.md$'
30-
echo "changed_files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | grep 'README\.md$' | xargs)" >> $GITHUB_OUTPUT
35+
# Initialize variables
36+
changed_files=""
37+
deleted_files=""
38+
any_changes="false"
39+
40+
# Loop through each file mask and check for changes
41+
for mask in $FILE_MASKS; do
42+
# Get the list of changed files for the current mask
43+
current_changed_files=$(git diff --name-status ${{ github.event.before }} ${{ github.event.after }} | grep '^[AM]' | grep "${mask}" | awk '{print $2}')
44+
# Get the list of deleted files for the current mask
45+
current_deleted_files=$(git diff --name-status ${{ github.event.before }} ${{ github.event.after }} | grep '^D' | grep "${mask}" | awk '{print $2}')
46+
# Check if there are any changes for the current mask
47+
current_any_changes=$(git diff --name-status ${{ github.event.before }} ${{ github.event.after }} | grep "${mask}" | wc -l)
48+
49+
# Append the current changed files to the overall list
50+
if [ -n "$current_changed_files" ]; then
51+
changed_files="$changed_files $current_changed_files"
52+
fi
53+
54+
# Append the current deleted files to the overall list
55+
if [ -n "$current_deleted_files" ]; then
56+
deleted_files="$deleted_files $current_deleted_files"
57+
fi
58+
59+
# Set any_changes to true if there are any changes for the current mask
60+
if [ "$current_any_changes" -gt 0 ]; then
61+
any_changes="true"
62+
fi
63+
done
64+
65+
# Set the outputs
66+
echo "changed_files=${changed_files}" >> $GITHUB_OUTPUT
67+
echo "deleted_files=${deleted_files}" >> $GITHUB_OUTPUT
68+
echo "any_changes=${any_changes}" >> $GITHUB_OUTPUT
3169
3270
- name: List changed files
3371
run: |
34-
for file in ${{ steps.changed-markdown-files.outputs.changed_files }}; do
35-
echo "$file was changed"
36-
done
37-
72+
for file in ${{ steps.changed-markdown-files.outputs.changed_files }}; do
73+
echo "$file was changed"
74+
done
3875
3976
- name: Install python3
4077
if: steps.changed-markdown-files.outputs.any_changed == 'true'
@@ -48,7 +85,7 @@ jobs:
4885
- name: Process *.md changes
4986
if: steps.changed-markdown-files.outputs.any_changed == 'true'
5087
env:
51-
CHANGED_FILES: ${{ steps.changed-markdown-files.outputs.all_changed_files }}
88+
CHANGED_FILES: ${{ steps.changed-markdown-files.outputs.changed_files }}
5289
DELETED_FILES: ${{ steps.changed-markdown-files.outputs.deleted_files }}
5390
run: |
5491
git config user.name "Chem O'Dun"

0 commit comments

Comments
 (0)