Files
proxmox/scripts/run-before-pr-validations.sh

57 lines
2.5 KiB
Bash
Raw Permalink Normal View History

#!/usr/bin/env bash
# Run all validations before opening PRs (Chainlist, token list, Trust Wallet).
# See: docs/04-configuration/PR_ADDITIONS_VALIDATION_REPORT.md
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
CHAINS_DIR="${CHAINS_DIR:-$HOME/projects/chains}"
TOKEN_LISTS_DIR="${TOKEN_LISTS_DIR:-$HOME/projects/token-lists}"
WALLET_CORE_DIR="${WALLET_CORE_DIR:-$HOME/projects/wallet-core}"
log() { echo "[$(date +%H:%M:%S)] $*"; }
err() { echo "ERROR: $*" >&2; }
# 1. Chains validation (ethereum-lists/chains)
log "1. Chains validation..."
if [[ -d "$CHAINS_DIR" ]]; then
cp "$REPO_ROOT/docs/04-configuration/pr-ready/eip155-138.json" "$CHAINS_DIR/_data/chains/"
(cd "$CHAINS_DIR" && npx prettier --write _data/chains/eip155-138.json 2>/dev/null)
(cd "$CHAINS_DIR" && ./gradlew run -q) && log " Chains: OK" || { err "Chains validation failed"; exit 1; }
else
log " Chains: SKIP (CHAINS_DIR not found: $CHAINS_DIR)"
fi
# 2. Token list schema validation
log "2. Token list schema validation..."
if [[ -d "$TOKEN_LISTS_DIR" ]]; then
(cd "$TOKEN_LISTS_DIR" && node -e "
const Ajv = require('ajv');
const addFormats = require('ajv-formats');
const schema = require('./src/tokenlist.schema.json');
const ajv = new Ajv({ allErrors: true });
addFormats(ajv);
const validate = ajv.compile(schema);
const list = require('$REPO_ROOT/token-lists/lists/dbis-138.tokenlist.json');
if (!validate(list)) { console.error(JSON.stringify(validate.errors, null, 2)); process.exit(1); }
console.log('Token list: OK');
") && log " Token list: OK" || { err "Token list validation failed"; exit 1; }
else
log " Token list: SKIP (TOKEN_LISTS_DIR not found: $TOKEN_LISTS_DIR)"
fi
# 3. Trust Wallet codegen (optional - requires Rust + registry entry)
log "3. Trust Wallet codegen..."
if [[ -d "$WALLET_CORE_DIR" ]] && command -v cargo &>/dev/null; then
if grep -q '"id": "dfiometa"' "$WALLET_CORE_DIR/registry.json" 2>/dev/null; then
(. "$HOME/.cargo/env" 2>/dev/null; cd "$WALLET_CORE_DIR" && ./tools/new-evmchain dfiometa 2>/dev/null) && log " Trust Wallet codegen: OK" || log " Trust Wallet codegen: SKIP (run manually: ./tools/new-evmchain dfiometa)"
else
log " Trust Wallet: SKIP (add Chain 138 to registry.json from pr-ready/trust-wallet-registry-chain138.json first)"
fi
else
log " Trust Wallet: SKIP (cargo not found or WALLET_CORE_DIR=$WALLET_CORE_DIR)"
fi
log "Done. All validations passed."