trustwallet-assets/script/action/tron.ts
Adam R 102f2b88d4
[Internal] New infra for runnig checks (not as jest tests) (#2938)
* CMC mapping update.

* New check infrastructure, move root folder test to new infra.

* Move list of allowed files to config.

* Include new check in other tests.

* More generic way to call checks.

* Organize fix and update actions behind interfaces.

* Organize checks into steps, multiple steps per action.

* Simplify checkStep class/instance creation.

* Migrate chain logo checks.

* Migrate asset folder check.

* Migrate further chain checks.

* Migrate eth fork folder checks.

* Migrate binance chain check.

* Extra output.

* Output improvements.

* Async fix.

* Migrate Tron check.

* Add Tron check.

* Remove Tron check from old.

* White/blacklist check in new intra, combined with fix.

* Refine ETH checks.

* Remove from old infra.

* Migrate CMC check to new infra.

* Migrate validator tests to new check infra.

* Migrate Json files validity check to new check infra.

* Whitelist check fix.

* Cleanup helpers.ts.

* Move helpers.ts.

* Cleanup of models.ts.

* Move models.ts.

* Move index.test.ts.

* Update with BEP8 support.

* Descriptive names for jobs within the builds.

Co-authored-by: Catenocrypt <catenocrypt@users.noreply.github.com>
2020-08-06 21:17:38 +02:00

68 lines
2.6 KiB
TypeScript

import { ActionInterface, CheckStepInterface } from "./interface";
import { getChainAssetsPath } from "../common/repo-structure";
import { Tron } from "../common/blockchains";
import { readDirSync, isPathExistsSync } from "../common/filesystem";
import { getChainAssetLogoPath, getChainValidatorsAssets } from "../common/repo-structure";
import { isLowerCase, isUpperCase } from "../common/types";
import { isLogoOK } from "../common/image";
import * as bluebird from "bluebird";
export function isTRC10(str: string): boolean {
return (/^\d+$/.test(str));
}
export function isTRC20(address: string): boolean {
return address.length == 34 &&
address.startsWith("T") &&
isLowerCase(address) == false &&
isUpperCase(address) == false;
}
export class TronAction implements ActionInterface {
getName(): string { return "Tron chain"; }
getChecks(): CheckStepInterface[] {
return [
{
getName: () => { return "Tron assets should be TRC10 or TRC20, logo of correct size"; },
check: async () => {
var error: string = "";
const path = getChainAssetsPath(Tron);
const assets = readDirSync(path);
await bluebird.each(assets, async (asset) => {
if (!isTRC10(asset) && !isTRC20(asset)) {
error += `Asset ${asset} at path '${path}' is not TRC10 nor TRC20\n`;
}
const assetsLogoPath = getChainAssetLogoPath(Tron, asset);
if (!isPathExistsSync(assetsLogoPath)) {
error += `Missing file at path '${assetsLogoPath}'\n`;
}
const [isOk, sizeMsg] = await isLogoOK(assetsLogoPath);
if (!isOk) {
error += sizeMsg + "\n";
}
});
return error;
}
},
{
getName: () => { return "Tron validator assets must have correct format"},
check: async () => {
var error: string = "";
const assets = getChainValidatorsAssets(Tron);
assets.forEach(addr => {
if (!(isTRC20(addr))) {
error += `Address ${addr} should be TRC20 address'\n`;
}
});
return error;
}
}
];
}
fix = null;
update = null;
}