Skip to content

CI: Validate coin configs #2

CI: Validate coin configs

CI: Validate coin configs #2

Workflow file for this run

name: Validate Coins
on:
pull_request:
types: [opened, synchronize, reopened]
push:
branches: [master, dev]
jobs:
validate-coins:
runs-on: ubuntu-latest
steps:
- name: Checkout the code
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install JSON tools
run: |
sudo npm install -g json-diff
sudo apt-get install jq -y
- name: Install Python
run: |
sudo apt-get install python3 python3-pip -y
pip3 install jsonlines
pip3 install requests
- name: Get coins repo commit
id: coins
run: |
echo "::set-output name=hash::$(jq -r .coins_repo_commit coins_ci.json)"
shell: bash
- name: Get coins.json and coins_config.json from KomodoPlatform/coins repo
run: |
curl -O https://raw.githubusercontent.com/KomodoPlatform/coins/${{ steps.coins.outputs.hash }}/coins
curl -O https://raw.githubusercontent.com/KomodoPlatform/coins/${{ steps.coins.outputs.hash }}/utils/coins_config.json
- name: Compare coins.json
run: json-diff assets/coins.json coins
- name: Compare coins_config.json
run: json-diff assets/coins_config.json coins_config.json
- name: Check wallet-only coins
run: |
python3 -c "
import json, re

Check failure on line 51 in .github/workflows/validate_coins.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/validate_coins.yml

Invalid workflow file

You have an error in your yaml syntax on line 51
with open('assets/coins_config.json', 'r') as f:
coins_json = json.load(f)
wallet_only_coins = [coin['coin'] for coin in coins_json.values() if coin['wallet_only']]
with open('lib/app_config/app_config.dart', 'r') as f:
dart_file = f.read()
coins_dart = re.findall(r'walletOnlyCoins => \[\s*([^]]+?)\s*\]', dart_file)
coins_dart = [coin.strip().strip('\'') for coin in coins_dart[0].split(',') if coin]
missing_coins = set(wallet_only_coins) - set(coins_dart)
assert len(missing_coins) == 0, f'Missing coins: {missing_coins}'
"
- name: Check URLs in app_config.dart
run: |
python3 -c "
import re, requests
with open('lib/app_config/app_config.dart', 'r') as f:
dart_file = f.read()
urls = re.findall(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|/|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', dart_file)
for url in urls:
try:
if 'discord' in url or 'github.com' in url or url.endswith('?') or '/api/' in url:
continue
cleaned_url = url.rstrip('.,;\'"')
response = requests.head(cleaned_url, allow_redirects = True)
if response.status_code >= 400 and response.status_code != 405:
raise AssertionError(f'{cleaned_url} is unreachable (HTTP {response.status_code})')
except requests.ConnectionError:
raise AssertionError(f'{cleaned_url} is unreachable (Connection Error)')
"