Skip to content

Commit 6483ff5

Browse files
committed
(feat) add ABI generation and version bump scripts
1 parent 601637d commit 6483ff5

5 files changed

Lines changed: 829 additions & 5 deletions

File tree

cli/package.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,19 @@
66
"bin": {
77
"fcf": "./dist/index.js"
88
},
9+
"files": [
10+
"dist",
11+
"src/abi/RIK.json"
12+
],
13+
"publishConfig": {
14+
"access": "public"
15+
},
916
"scripts": {
1017
"dev": "tsx src/index.ts",
18+
"abi": "forge build --root ../contracts && node scripts/generate-abi.mjs",
1119
"build": "tsup src/index.ts --format esm --dts --clean",
20+
"version:minor": "node scripts/bump-minor.mjs",
21+
"prepublishOnly": "pnpm version:minor && pnpm abi && pnpm test && pnpm typecheck && pnpm build",
1222
"test": "vitest run",
1323
"typecheck": "tsc --noEmit"
1424
},

cli/scripts/bump-minor.mjs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { readFileSync, writeFileSync } from "node:fs";
2+
3+
const packageUrl = new URL("../package.json", import.meta.url);
4+
const packageJson = JSON.parse(readFileSync(packageUrl, "utf8"));
5+
const match = /^v?(\d+)\.(\d+)\.(\d+)(-.+)?$/.exec(packageJson.version);
6+
if (!match) throw Error(`invalid package version: ${packageJson.version}`);
7+
8+
const major = Number(match[1]);
9+
const minor = Number(match[2]) + 1;
10+
const suffix = match[4] ?? "";
11+
12+
packageJson.version = `${major}.${minor}.0${suffix}`;
13+
writeFileSync(packageUrl, `${JSON.stringify(packageJson, null, 2)}\n`);

cli/scripts/generate-abi.mjs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
2+
3+
const artifactUrl = new URL("../../contracts/out/RIK.sol/RIK.json", import.meta.url);
4+
const abiUrl = new URL("../src/abi/RIK.json", import.meta.url);
5+
6+
const artifact = JSON.parse(readFileSync(artifactUrl, "utf8"));
7+
if (!Array.isArray(artifact.abi)) throw Error("ABI JSON file does not contain an abi array");
8+
9+
mkdirSync(new URL("../src/abi", import.meta.url), { recursive: true });
10+
writeFileSync(abiUrl, `${JSON.stringify(artifact.abi, null, 2)}\n`);

0 commit comments

Comments
 (0)