chains/.github/workflows/pr_checks.yml
Vladimir Pouzanov 93c61b12f2
Add a slightly better linter check (#2446)
* Remove the NPM cache from the validate_icons step

* Add a prettier formatting check

---------

Co-authored-by: ligi <ligi@ligi.de>
2023-03-18 18:37:17 +01:00

125 lines
3.6 KiB
YAML

name: Run PR Checks
on:
pull_request:
jobs:
validate_icons:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: nrwl/nx-set-shas@v3
id: last_successful_commit_push
with:
main-branch-name: master
workflow-id: 'pr_checks.yml'
- name: Get changed icons
id: changed-icons
uses: tj-actions/changed-files@v35
with:
files: _data/icons/*.json
base_sha: ${{ steps.last_successful_commit_push.outputs.base }}
- run: sudo apt-get -y install jq curl exiftool
- name: Verify the changed icons
if: steps.changed-icons.outputs.any_changed == 'true'
run: |
set -euo pipefail
BAD=0
for CHANGED_FILE in ${{ steps.changed-icons.outputs.all_changed_files }}; do
echo "Checking icon $CHANGED_FILE"
URL=$(cat "$CHANGED_FILE" | jq '.[0].url' -r)
if [[ "$URL" =~ ^ipfs://([A-Za-z0-9]+)$ ]]; then
echo "Trying to download the image..."
curl -Lo icon "https://cloudflare-ipfs.com/ipfs/${BASH_REMATCH[1]}" 2>/dev/null
METADATA=$(exiftool icon -json)
SCHEMA_WIDTH=$(cat "$CHANGED_FILE" | jq '.[0].width' -r)
SCHEMA_HEIGHT=$(cat "$CHANGED_FILE" | jq '.[0].height' -r)
SCHEMA_TYPE=$(cat "$CHANGED_FILE" | jq '.[0].format' -r)
META_WIDTH=$(echo "$METADATA" | jq '.[0].ImageWidth' -r)
META_HEIGHT=$(echo "$METADATA" | jq '.[0].ImageHeight' -r)
META_TYPE=$(echo "$METADATA" | jq '.[0].FileTypeExtension' -r)
if [ "$SCHEMA_WIDTH" != "$META_WIDTH" ]; then
echo "Expected width $SCHEMA_WIDTH, got $META_WIDTH"
BAD=1
fi
if [ "$SCHEMA_HEIGHT" != "$META_HEIGHT" ]; then
echo "Expected height $SCHEMA_HEIGHT, got $META_HEIGHT"
BAD=1
fi
case "$SCHEMA_TYPE" in
png)
if [ "$META_TYPE" != "png" ]; then
echo "Expected type png, got $META_TYPE"
BAD=1
fi
;;
jpg)
if [ "$META_TYPE" != "jpg" ]; then
echo "Expected type jpg, got $META_TYPE"
BAD=1
fi
;;
svg)
if [ "$META_TYPE" != "svg" ]; then
echo "Expected type svg, got $META_TYPE"
BAD=1
fi
;;
*)
echo "Expected type png, jpg, or svg, got $SCHEMA_TYPE"
BAD=1
;;
esac
else
echo "Expected an IPFS URL, got $URL"
BAD=1
fi
done
exit $BAD
validate_formatting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: nrwl/nx-set-shas@v3
id: last_successful_commit_push
with:
main-branch-name: master
workflow-id: 'pr_checks.yml'
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v35
with:
files: _data/*/*.json
base_sha: ${{ steps.last_successful_commit_push.outputs.base }}
- run: sudo npm i -g prettier
- name: Verify the changed icons
if: steps.changed-files.outputs.any_changed == 'true'
run: |
set -euo pipefail
BAD=0
for CHANGED_FILE in ${{ steps.changed-files.outputs.all_changed_files }}; do
echo "Checking $CHANGED_FILE"
diff -u "$CHANGED_FILE" <(prettier "$CHANGED_FILE")
done