2023-03-18 11:09:29 +00:00
|
|
|
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 }}
|
2023-03-21 11:05:12 +00:00
|
|
|
|
|
|
|
- name: Get changed icon blobs
|
|
|
|
id: changed-icon-blobs
|
|
|
|
uses: tj-actions/changed-files@v35
|
|
|
|
with:
|
|
|
|
files: _data/iconsDownload/*
|
|
|
|
base_sha: ${{ steps.last_successful_commit_push.outputs.base }}
|
2023-03-18 11:09:29 +00:00
|
|
|
|
|
|
|
- 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
|
|
|
|
|
2023-03-21 11:05:12 +00:00
|
|
|
CHANGED_ICON_BLOBS=(${{ steps.changed-icon-blobs.outputs.all_changed_files }})
|
|
|
|
|
2023-03-18 11:09:29 +00:00
|
|
|
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
|
2023-03-21 11:05:12 +00:00
|
|
|
IPFS_HASH=${BASH_REMATCH[1]}
|
|
|
|
|
|
|
|
if [[ "${CHANGED_ICON_BLOBS[*]} " =~ "_data/iconsDownload/$IPFS_HASH " ]]; then
|
|
|
|
TARGET_FILE="_data/iconsDownload/$IPFS_HASH"
|
|
|
|
else
|
|
|
|
echo "Trying to download the image..."
|
|
|
|
TARGET_FILE=icon
|
|
|
|
curl -Lo icon "https://cloudflare-ipfs.com/ipfs/$IPFS_HASH" 2>/dev/null
|
|
|
|
fi
|
|
|
|
|
|
|
|
METADATA=$(exiftool $TARGET_FILE -json)
|
2023-03-18 11:09:29 +00:00
|
|
|
|
|
|
|
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
|
2023-03-18 17:37:17 +00:00
|
|
|
|
|
|
|
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
|