UNPKG

@moonsong-labs/moonwall-cli

Version:

Testing framework for the Moon family of projects

67 lines (64 loc) 2.65 kB
import { downloader } from "./chunk-BQJSSQD3.js"; import { runTask } from "./chunk-BXT4DOIP.js"; // src/cmds/fetchArtifact.ts import fs from "node:fs/promises"; import path from "path"; import fetch from "node-fetch"; import chalk from "chalk"; var supportedBinaries = [ "moonbeam", "polkadot", "moonbase-runtime", "moonbeam-runtime", "moonriver-runtime" ]; var repos = { moonbeam: "https://api.github.com/repos/purestake/moonbeam/releases", polkadot: "https://api.github.com/repos/paritytech/polkadot/releases" }; async function fetchArtifact(args) { if (!supportedBinaries.includes(args.artifact)) { throw new Error(`Downloading ${args.artifact} unsupported`); } if (await fs.access(args.path).catch(() => true)) { console.log("Folder not exists, creating"); fs.mkdir(args.path); } const binary = args.artifact; const repoName = args.artifact.includes("-runtime") ? "moonbeam" : args.artifact; const enteredPath = args.path ? args.path : "tmp/"; const binaryPath = path.join("./", enteredPath, binary); const releases = await (await fetch(repos[repoName])).json(); const release = args.artifact.includes("-runtime") ? releases.find((release2) => { if (args.binVersion === "latest") { return release2.assets.find((asset2) => asset2.name.includes(binary)); } else { return release2.assets.find((asset2) => asset2.name === `${binary}-${args.binVersion}.wasm`); } }) : args.binVersion === "latest" ? releases.find((release2) => release2.assets.find((asset2) => asset2.name === binary)) : releases.filter((release2) => release2.tag_name.includes("v" + args.binVersion)).find((release2) => release2.assets.find((asset2) => asset2.name === binary)); if (release == null) { throw new Error(`Release not found for ${args.binVersion}`); } const asset = args.artifact.includes("-runtime") ? release.assets.find((asset2) => asset2.name.includes(binary) && asset2.name.includes("wasm")) : release.assets.find((asset2) => asset2.name === binary); if (binary == "moonbeam" || binary == "polkadot") { await downloader(asset.browser_download_url, binaryPath); await fs.chmod(binaryPath, "755"); const version = (await runTask(`./${binaryPath} --version`)).trim(); process.stdout.write(` ${chalk.green(version.trim())} \u2713 `); } if (binary.includes("-runtime")) { const binaryPath2 = path.join("./", args.path, `${args.artifact}-${args.binVersion}.wasm`); await downloader(asset.browser_download_url, binaryPath2); await fs.chmod(binaryPath2, "755"); process.stdout.write(` ${chalk.green("done")} \u2713 `); } } export { fetchArtifact };