sbv2-solana/programs/anchor-vrf-parser/scripts/generate.ts

56 lines
1.9 KiB
TypeScript

const PROGRAM_NAME = "anchor_vrf_parser";
const PROGRAM_ID = "7PoPs442NYqZwfrFhMuVDTzpWfaZi8dCtRFwqydnj5Gt";
import { Solita } from "@metaplex-foundation/solita";
import { spawn } from "child_process";
import { writeFile } from "fs/promises";
import * as path from "path";
const programDir = path.join(__dirname, "..");
// console.log(`programDir ${programDir}`);
const generatedIdlDir = path.join(__dirname, "..", "target", "idl");
// console.log(`generatedIdlDir ${generatedIdlDir}`);
const generatedSDKDir = path.join(__dirname, "..", "src", "generated");
// console.log(`generatedSDKDir ${generatedSDKDir}`);
const anchor = spawn("anchor", ["build", "--idl", generatedIdlDir], {
cwd: programDir,
})
.on("error", (err) => {
console.error(err);
// @ts-ignore this err does have a code
if (err.code === "ENOENT") {
console.error(
"Ensure that `anchor` is installed and in your path, see:\n https://project-serum.github.io/anchor/getting-started/installation.html#install-anchor\n"
);
}
process.exit(1);
})
.on("exit", () => {
console.log(
"IDL written to: %s",
path.join(generatedIdlDir, `${PROGRAM_NAME}.json`)
);
generateTypeScriptSDK();
});
anchor.stdout.on("data", (buf) => console.log(buf.toString("utf8")));
anchor.stderr.on("data", (buf) => console.error(buf.toString("utf8")));
async function generateTypeScriptSDK() {
console.error("Generating TypeScript SDK to %s", generatedSDKDir);
const generatedIdlPath = path.join(generatedIdlDir, `${PROGRAM_NAME}.json`);
const idl = require(generatedIdlPath);
if (idl.metadata?.address == null) {
idl.metadata = { ...idl.metadata, address: PROGRAM_ID };
await writeFile(generatedIdlPath, JSON.stringify(idl, null, 2));
}
const gen = new Solita(idl, { formatCode: true });
await gen.renderAndWriteTo(generatedSDKDir);
console.error("Success!");
process.exit(0);
}