git.delta.rocks / unique-network / refs/commits / f628606f8371

difftreelog

source

tests/src/generateEnv.ts3.3 KiBsourcehistory
1import {ApiPromise, WsProvider} from '@polkadot/api';2import {readFile} from 'fs/promises';3import {join} from 'path';4import {makeNames} from './util';56const {dirname} = makeNames(import.meta.url);78async function fetchVersion(chain: string): Promise<string> {9  const api = await ApiPromise.create({provider: new WsProvider(chain)});10  const last = (await api.query.system.lastRuntimeUpgrade()).toJSON();11  await api.disconnect();12  return (last as any).specVersion.toString();13}1415function setVar(env: string, key: string, value: string): string {16  return env.replace(new RegExp(`${key}=.+?\n`), `${key}=${value}\n`);17}1819// Fetch and format version string20async function ff(url: string, regex: RegExp, rep: string): Promise<string> {21  const ver = await fetchVersion(url);22  if (ver.match(regex) === null)23    throw new Error(`bad regex for ${url}`);24  return ver.replace(regex, rep);25}26function fixupUnique(version: string): string {27  if (version === 'release-v930033')28    return 'release-v930033-fix-gas-price';29  if (version === 'release-v930034')30    return 'release-v930034-fix-gas-price';31  return version;32}3334(async () => {35  let env = (await readFile(join(dirname, '../../.env'))).toString();36  await Promise.all([37    ff('wss://rpc.polkadot.io/', /^(.)(..)(.)$/, 'release-v0.$1.$2').then(v => env = setVar(env, 'POLKADOT_MAINNET_BRANCH', v)),38    ff('wss://statemint-rpc.polkadot.io/', /^(....)$/, 'release-parachains-v$1').then(v => env = setVar(env, 'STATEMINT_BUILD_BRANCH', v)),39    ff('wss://acala-rpc-0.aca-api.network/', /^(.)(..)(.)$/, '$1.$2.$3').then(v => env = setVar(env, 'ACALA_BUILD_BRANCH', v)),40    ff('wss://wss.api.moonbeam.network/', /^(....)$/, 'runtime-$1').then(v => env = setVar(env, 'MOONBEAM_BUILD_BRANCH', v)),41    ff('wss://ws.unique.network/', /^(......)$/, 'release-v$1').then(v => env = setVar(env, 'UNIQUE_MAINNET_BRANCH', fixupUnique(v))),4243    ff('wss://kusama-rpc.polkadot.io/', /^(.)(..)(.)$/, 'release-v0.$1.$2').then(v => env = setVar(env, 'KUSAMA_MAINNET_BRANCH', v)),44    ff('wss://statemine-rpc.polkadot.io/', /^(....)$/, 'release-parachains-v$1').then(v => env = setVar(env, 'STATEMINE_BUILD_BRANCH', v)),45    ff('wss://karura-rpc-0.aca-api.network/', /^(.)(..)(.)$/, 'release-karura-$1.$2.$3').then(v => env = setVar(env, 'KARURA_BUILD_BRANCH', v)),46    ff('wss://wss.api.moonriver.moonbeam.network/', /^(....)$/, 'runtime-$1').then(v => env = setVar(env, 'MOONRIVER_BUILD_BRANCH', v)),47    ff('wss://ws-quartz.unique.network/', /^(......)$/, 'release-v$1').then(v => env = setVar(env, 'QUARTZ_MAINNET_BRANCH', fixupUnique(v))),4849    ff('wss://ws-westend.unique.network/', /^(.)(..)(.)$/, 'release-v0.$1.$2').then(v => env = setVar(env, 'UNIQUEWEST_MAINNET_BRANCH', v)),50    ff('wss://westmint-rpc.polkadot.io/', /^(....)$/, 'parachains-v$1').then(v => env = setVar(env, 'WESTMINT_BUILD_BRANCH', v)),51    ff('wss://ws-opal.unique.network/', /^(......)$/, 'release-v$1').then(v => env = setVar(env, 'OPAL_MAINNET_BRANCH', fixupUnique(v))),5253    ff('wss://ws-eastend.unique.network/', /^(.)(..)(.)$/, 'release-v0.$1.$2').then(v => env = setVar(env, 'UNIQUEEAST_MAINNET_BRANCH', v)),54    ff('wss://ws-sapphire.unique.network/', /^(......)$/, 'release-v$1').then(v => env = setVar(env, 'SAPPHIRE_MAINNET_BRANCH', fixupUnique(v))),55  ]);56  console.log(env);57})().catch(e => {58  console.error('Fatal');59  console.error(e.stack);60  process.exit(1);61});