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 }} - 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 }} - 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 CHANGED_ICON_BLOBS=(${{ steps.changed-icon-blobs.outputs.all_changed_files }}) 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 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) 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