29f6ba6310
* chore: add workflow which checks if SPDX ID exists * chore: add missing SPDX ID in some files * chore: change trigger condition * chore: trigger on push * lint
75 lines
2.1 KiB
YAML
75 lines
2.1 KiB
YAML
name: Check SPDX-License-Identifier
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- develop
|
|
pull_request:
|
|
|
|
jobs:
|
|
check-spdx-license-id:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4.1.1
|
|
- name: Check
|
|
run: |
|
|
counter=0
|
|
|
|
search() {
|
|
local directory="$1"
|
|
find "$directory" -type f \
|
|
'(' \
|
|
-name "*.cjs" -and -not -name '*.config.cjs' -o \
|
|
-name "*.html" -o \
|
|
-name "*.js" -and -not -name '*.config.js' -o \
|
|
-name "*.mjs" -and -not -name '*.config.mjs' -o \
|
|
-name "*.scss" -o \
|
|
-name "*.ts" -and -not -name '*.config.ts' -o \
|
|
-name "*.vue" \
|
|
')' -and \
|
|
-not -name '*eslint*'
|
|
}
|
|
|
|
check() {
|
|
local file="$1"
|
|
if ! (
|
|
grep -q "SPDX-FileCopyrightText: syuilo and misskey-project" "$file" ||
|
|
grep -q "SPDX-License-Identifier: AGPL-3.0-only" "$file"
|
|
); then
|
|
echo "Missing: $file"
|
|
((counter++))
|
|
fi
|
|
}
|
|
|
|
directories=(
|
|
"cypress/e2e"
|
|
"packages/backend/migration"
|
|
"packages/backend/src"
|
|
"packages/backend/test"
|
|
"packages/frontend/.storybook"
|
|
"packages/frontend/@types"
|
|
"packages/frontend/lib"
|
|
"packages/frontend/public"
|
|
"packages/frontend/src"
|
|
"packages/frontend/test"
|
|
"packages/misskey-bubble-game/src"
|
|
"packages/misskey-reversi/src"
|
|
"packages/sw/src"
|
|
"scripts"
|
|
)
|
|
|
|
for directory in "${directories[@]}"; do
|
|
for file in $(search $directory); do
|
|
check "$file"
|
|
done
|
|
done
|
|
|
|
if [ $counter -gt 0 ]; then
|
|
echo "SPDX-License-Identifier is missing in $counter files."
|
|
exit 1
|
|
else
|
|
echo "SPDX-License-Identifier is certainly described in all target files!"
|
|
exit 0
|
|
fi
|