Something went wrong. Try again.
Cursor plugin specification and official plugins
Something went wrong. Try again.
1.7 kB · 62 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263import { createHash } from "node:crypto";import { existsSync, readFileSync, writeFileSync } from "node:fs";import { join } from "node:path";
const scriptsDirectory = import.meta.dir;const nodeModulesDirectory = join(scriptsDirectory, "node_modules");const commanderPackagePath = join( nodeModulesDirectory, "commander", "package.json");const installKeyPath = join( nodeModulesDirectory, ".poteto-mode-tools-install-key");
function currentInstallKey(): string { return createHash("sha256") .update(readFileSync(join(scriptsDirectory, "package.json"))) .update("\0") .update(readFileSync(join(scriptsDirectory, "bun.lock"))) .digest("hex");}
export function ensureDependenciesInstalled(): void { const installKey = currentInstallKey(); if ( existsSync(commanderPackagePath) && existsSync(installKeyPath) && readFileSync(installKeyPath, "utf8").trim() === installKey ) { return; }
const result = Bun.spawnSync( [process.execPath, "install", "--frozen-lockfile"], { cwd: scriptsDirectory } ); if (result.exitCode !== 0) { process.stdout.write(result.stdout); process.stderr.write(result.stderr); throw new Error( `bun install --frozen-lockfile exited with status ${result.exitCode}` ); } if (!existsSync(commanderPackagePath)) { throw new Error( "bun install --frozen-lockfile completed without installing commander" ); }
writeFileSync(installKeyPath, `${installKey}\n`);
const restarted = Bun.spawnSync([process.execPath, ...process.argv.slice(1)], { cwd: process.cwd(), env: process.env, stdin: "inherit", stdout: "inherit", stderr: "inherit", }); process.exit(restarted.exitCode ?? 1);}