feat: add Bun version check to CLI dependencies (#101)

Add version validation to ensure Bun 1.2+ is used for consistent
behavior across development environments.
This commit is contained in:
Ahmad Kaouk 2025-06-19 02:01:22 +02:00 committed by GitHub
parent 79a1d19b0e
commit c73cb58ec3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 34 additions and 1 deletions

View file

@ -12,7 +12,7 @@
## Pre-requisites
- [Kurtosis](https://docs.kurtosis.com/install): For launching test networks
- [Bun](https://bun.sh/): TypeScript runtime and package manager
- [Bun](https://bun.sh/) v1.2 or higher: TypeScript runtime and package manager
- [Docker](https://www.docker.com/): For container management
##### MacOS

View file

@ -2,6 +2,7 @@ import { $ } from "bun";
import invariant from "tiny-invariant";
import { logger, printDivider, printHeader } from "utils";
import type { DeployOptions } from "../deploy";
import { MIN_BUN_VERSION } from "./consts";
import type { LaunchedNetwork } from "./launchedNetwork";
// ===== Checks =====
@ -15,6 +16,15 @@ export const checkBaseDependencies = async (): Promise<void> => {
logger.success("Kurtosis CLI found");
if (!(await checkBunVersion())) {
logger.error(
`Bun version must be ${MIN_BUN_VERSION.major}.${MIN_BUN_VERSION.minor} or higher: https://bun.sh/docs/installation#upgrading`
);
throw Error("❌ Bun version is too old.");
}
logger.success("Bun is installed and up to date");
if (!(await checkDockerRunning())) {
logger.error("Is Docker Running? Unable to make connection to docker daemon");
throw Error("❌ Error connecting to Docker");
@ -72,6 +82,24 @@ export const deploymentChecks = async (
printDivider();
};
const checkBunVersion = async (): Promise<boolean> => {
const bunVersion = Bun.version;
const [major, minor] = bunVersion.split(".").map(Number);
// Check if version meets minimum requirements
const isVersionValid =
major > MIN_BUN_VERSION.major ||
(major === MIN_BUN_VERSION.major && minor >= MIN_BUN_VERSION.minor);
if (!isVersionValid) {
logger.debug(`Bun version: ${bunVersion} (too old)`);
return false;
}
logger.debug(`Bun version: ${bunVersion}`);
return true;
};
const checkKurtosisInstalled = async (): Promise<boolean> => {
const { exitCode, stderr, stdout } = await $`kurtosis version`.nothrow().quiet();
if (exitCode !== 0) {

View file

@ -42,3 +42,8 @@ export const BASE_SERVICES = [
"el-2-reth-lodestar",
"dora"
];
/**
* Minimum required Bun version
*/
export const MIN_BUN_VERSION = { major: 1, minor: 2 };