Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
- Config, docs, scripts, and backup manifests - Submodule refs unchanged (m = modified content in submodules) Made-with: Cursor
86 lines
3.9 KiB
Bash
Executable File
86 lines
3.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# Prepare 512×512 PNG logos for CoinGecko/CMC token submission.
|
||
# Downloads logos from Trust Wallet (or provided URLs) and resizes to 512×512.
|
||
# Output: docs/04-configuration/coingecko/logos/ (gitignored by default).
|
||
#
|
||
# Requires: curl, and one of: convert (ImageMagick), magick (ImageMagick 7), sips (macOS), or python3+PIL
|
||
# Install ImageMagick for resize: apt install imagemagick / brew install imagemagick
|
||
# Usage: ./prepare-token-logos-512x512.sh [OUTPUT_DIR]
|
||
|
||
set -euo pipefail
|
||
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
OUTPUT_DIR="${1:-${SCRIPT_DIR}/../logos}"
|
||
mkdir -p "$OUTPUT_DIR"
|
||
|
||
LOGO_BASE="https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets"
|
||
|
||
# Symbol -> URL (Trust Wallet mainnet addresses for USDC, USDT, WETH)
|
||
declare -A LOGOS=(
|
||
["WETH"]="${LOGO_BASE}/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png"
|
||
["WETH10"]="${LOGO_BASE}/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png"
|
||
["cUSDC"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["cUSDT"]="${LOGO_BASE}/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png"
|
||
["cEURC"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["cEURT"]="${LOGO_BASE}/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png"
|
||
["cGBPC"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["cGBPT"]="${LOGO_BASE}/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png"
|
||
["cAUDC"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["cJPYC"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["cCHFC"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["cCADC"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["cXAUC"]="${LOGO_BASE}/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png"
|
||
["cXAUT"]="${LOGO_BASE}/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png"
|
||
["LiXAU"]="${LOGO_BASE}/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png"
|
||
["USDW"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["EURW"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["GBPW"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["AUDW"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["JPYW"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["CHFW"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["CADW"]="${LOGO_BASE}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png"
|
||
["LINK"]="${LOGO_BASE}/0x514910771AF9Ca656af840dff83E8264EcF986CA/logo.png"
|
||
["ETH-USD"]="${LOGO_BASE}/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png"
|
||
)
|
||
|
||
resize_to_512() {
|
||
local src="$1"
|
||
local dst="$2"
|
||
if command -v convert &>/dev/null; then
|
||
convert "$src" -resize 512x512! -background none -gravity center -extent 512x512 "$dst"
|
||
elif command -v magick &>/dev/null; then
|
||
magick "$src" -resize 512x512! -background none -gravity center -extent 512x512 "$dst"
|
||
elif command -v sips &>/dev/null; then
|
||
sips -z 512 512 "$src" --out "$dst"
|
||
elif python3 -c "from PIL import Image" 2>/dev/null; then
|
||
python3 -c "
|
||
from PIL import Image
|
||
img = Image.open('$src').convert('RGBA')
|
||
img = img.resize((512, 512), Image.Resampling.LANCZOS)
|
||
img.save('$dst')
|
||
"
|
||
else
|
||
echo "No ImageMagick, sips, or PIL found. Copying without resize (may not be 512×512)." >&2
|
||
cp "$src" "$dst"
|
||
fi
|
||
}
|
||
|
||
echo "Preparing 512×512 PNG logos in $OUTPUT_DIR"
|
||
for symbol in "${!LOGOS[@]}"; do
|
||
url="${LOGOS[$symbol]}"
|
||
out="$OUTPUT_DIR/${symbol}-512x512.png"
|
||
tmp="$OUTPUT_DIR/.tmp-${symbol}.png"
|
||
if curl -sS -L -o "$tmp" "$url" 2>/dev/null && [ -s "$tmp" ]; then
|
||
resize_to_512 "$tmp" "$out"
|
||
rm -f "$tmp"
|
||
echo " ✅ $symbol -> $out"
|
||
else
|
||
echo " ❌ $symbol: failed to fetch $url"
|
||
rm -f "$tmp"
|
||
fi
|
||
done
|
||
|
||
echo ""
|
||
echo "Done. Logos in $OUTPUT_DIR"
|
||
echo "Use these for CoinGecko/CMC submission (512×512 PNG required)."
|