Skip to content

Commit 474b1fd

Browse files
committed
feat: verify foundry binaries util
1 parent a0d29ee commit 474b1fd

2 files changed

Lines changed: 35 additions & 0 deletions

File tree

src/utils/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { getClientVersion } from './getClientVersion';
77
import { getRollupCreatorAddress } from './getRollupCreatorAddress';
88
import { getTokenBridgeCreatorAddress } from './getTokenBridgeCreatorAddress';
99
import { getWethAddress } from './getWethAddress';
10+
import { verifyFoundryBinaries } from './verifyFoundry';
1011

1112
export {
1213
generateChainId,
@@ -18,4 +19,5 @@ export {
1819
getRollupCreatorAddress,
1920
getTokenBridgeCreatorAddress,
2021
getWethAddress,
22+
verifyFoundryBinaries,
2123
};

src/utils/verifyFoundry.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { execFile } from 'node:child_process';
2+
3+
const FOUNDRY_BINARIES: ['forge', 'cast'] = ['forge', 'cast'];
4+
5+
function runVersionCommand(binary: 'forge' | 'cast'): Promise<string> {
6+
return new Promise((resolve, reject) => {
7+
execFile(binary, ['--version'], (error, stdout) => {
8+
if (error) {
9+
reject(error);
10+
return;
11+
}
12+
13+
resolve(stdout);
14+
});
15+
});
16+
}
17+
18+
export async function verifyFoundryBinaries() {
19+
const results = await Promise.allSettled(
20+
FOUNDRY_BINARIES.map((binary) => runVersionCommand(binary)),
21+
);
22+
23+
const binariesPresent = results.every((result) => result.status === 'fulfilled');
24+
25+
const stableReleaseInstalled = results.every(
26+
(result) => result.status === 'fulfilled' && result.value.includes('-stable'),
27+
);
28+
29+
return {
30+
binariesPresent,
31+
stableReleaseInstalled,
32+
};
33+
}

0 commit comments

Comments
 (0)