chore: sync all changes to Gitea
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
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
This commit is contained in:
85
docs/04-configuration/coingecko/scripts/prepare-token-logos-512x512.sh
Executable file
85
docs/04-configuration/coingecko/scripts/prepare-token-logos-512x512.sh
Executable file
@@ -0,0 +1,85 @@
|
||||
#!/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)."
|
||||
Reference in New Issue
Block a user