#!/usr/bin/env python3 import json import os import subprocess import tempfile import click import requests LIVE_URL = "https://trezor.io/static/json/coins_details.json" COINS_DETAILS = os.path.join( os.path.dirname(__file__), "..", "defs", "coins_details.json" ) def diffize_file(coins_details, tmp): coins_list = list(coins_details["coins"].values()) for coin in coins_list: coin.pop("marketcap_usd", None) links = coin.get("links", {}) wallets = coin.get("wallet", {}) for link in links: links[link] = links[link].rstrip("/") for wallet in wallets: wallet["url"] = wallet["url"].rstrip("/") if not coin.get("wallet"): coin.pop("wallet", None) coins_list.sort(key=lambda c: c["name"]) for coin in coins_list: name = coin["name"] for key in coin: print(name, "\t", key, ":", coin[key], file=tmp) tmp.flush() @click.command() def cli(): """Compare data from trezor.io/coins with current coins_details.json Shows a nicely formatted diff between the live version and the trezor-common version. Useful for catching auto-generation problems, etc. """ live_json = requests.get(LIVE_URL).json() with open(COINS_DETAILS) as f: coins_details = json.load(f) Tmp = tempfile.NamedTemporaryFile with Tmp("w") as tmpA, Tmp("w") as tmpB: diffize_file(live_json, tmpA) diffize_file(coins_details, tmpB) subprocess.call(["diff", "-u", "--color=auto", tmpA.name, tmpB.name]) if __name__ == "__main__": cli()