Skip to content

Commit a07362c

Browse files
committed
move into same file to make dependency more transparent
1 parent ad39a20 commit a07362c

File tree

2 files changed

+81
-87
lines changed

2 files changed

+81
-87
lines changed

.github/workflows/copyPasteDetection.yml

Lines changed: 0 additions & 87 deletions
This file was deleted.

.github/workflows/node.js.yml

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,87 @@ jobs:
6060
- run: npm run testCompile
6161
- run: npm run lint
6262

63+
jscpd:
64+
needs: [lint-commits]
65+
if: ${{ github.event_name == 'pull_request'}}
66+
runs-on: ubuntu-latest
67+
strategy:
68+
matrix:
69+
node-version: [18.x]
70+
env:
71+
NODE_OPTIONS: '--max-old-space-size=8192'
72+
73+
steps:
74+
- uses: actions/checkout@v4
75+
with:
76+
fetch-depth: 0
77+
78+
- name: Use Node.js ${{ matrix.node-version }}
79+
uses: actions/setup-node@v4
80+
with:
81+
node-version: ${{ matrix.node-version }}
82+
83+
- name: Fetch fork upstream
84+
env:
85+
REPO_NAME: ${{ github.event.pull_request.head.repo.full_name }}
86+
run: |
87+
git remote add forkUpstream https://github.com/$REPO_NAME # URL of the fork
88+
git fetch forkUpstream # Fetch fork
89+
90+
- name: Compute git diff
91+
env:
92+
CURRENT_BRANCH: ${{ github.head_ref }}
93+
TARGET_BRANCH: ${{ github.event.pull_request.base.ref }}
94+
run: git diff --name-only origin/$TARGET_BRANCH forkUpstream/$CURRENT_BRANCH > diff_output.txt
95+
96+
- run: npm install -g jscpd
97+
98+
- run: jscpd --config "$GITHUB_WORKSPACE/.github/workflows/jscpd.json"
99+
100+
- if: always()
101+
uses: actions/upload-artifact@v4
102+
with:
103+
name: unfiltered-jscpd-report
104+
path: ./jscpd-report.json
105+
106+
- name: Filter jscpd report for changed files
107+
run: |
108+
if [ ! -f ./jscpd-report.json ]; then
109+
echo "jscpd-report.json not found"
110+
exit 1
111+
fi
112+
echo "Filtering jscpd report for changed files..."
113+
CHANGED_FILES=$(jq -R -s -c 'split("\n")[:-1]' diff_output.txt)
114+
echo "Changed files: $CHANGED_FILES"
115+
jq --argjson changed_files "$CHANGED_FILES" '
116+
.duplicates | map(select(
117+
(.firstFile?.name as $fname | $changed_files | any(. == $fname)) or
118+
(.secondFile?.name as $sname | $changed_files | any(. == $sname))
119+
))
120+
' ./jscpd-report.json > filtered-jscpd-report.json
121+
cat filtered-jscpd-report.json
122+
123+
- name: Check for duplicates
124+
run: |
125+
if [ $(wc -l < ./filtered-jscpd-report.json) -gt 1 ]; then
126+
echo "filtered_report_exists=true" >> $GITHUB_ENV
127+
else
128+
echo "filtered_report_exists=false" >> $GITHUB_ENV
129+
fi
130+
- name: upload filtered report (if applicable)
131+
if: env.filtered_report_exists == 'true'
132+
uses: actions/upload-artifact@v4
133+
with:
134+
name: filtered-jscpd-report
135+
path: ./filtered-jscpd-report.json
136+
137+
- name: Fail and log found duplicates.
138+
if: env.filtered_report_exists == 'true'
139+
run: |
140+
cat ./filtered-jscpd-report.json
141+
echo "Duplications found, failing the check."
142+
exit 1
143+
63144
macos:
64145
needs: lint-commits
65146
name: test macOS

0 commit comments

Comments
 (0)