UNPKG

@speedscale/proxymock

Version:

A free desktop CLI that automatically creates mocks and tests from watching your app run.

65 lines (58 loc) 1.78 kB
import { spawn } from "child_process"; import { join, dirname } from "path"; import { readFileSync } from "fs"; import { fileURLToPath } from "url"; import logger from "../lib/log.js"; import { INSTALLROOT, binaryPath } from "./constants.js"; /** * Reads the npm package version from package.json * @returns {string} The version string (e.g., "2.3.660") */ export function getPackageVersion() { try { const __dirname = dirname(fileURLToPath(import.meta.url)); const packageJson = JSON.parse( readFileSync(join(__dirname, "..", "package.json"), "utf8"), ); if (!packageJson.version) { throw new Error("No version found in package.json"); } return packageJson.version; } catch (error) { throw new Error(`Failed to read package version: ${error.message}`); } } /** * Retrieves the version of the installed proxymock binary * @returns {Promise<string|null>} The installed version (e.g., "v2.3.660") or null if unable to determine */ export async function getInstalledVersion() { return new Promise((resolve) => { const child = spawn(binaryPath, [ "version", "--client", "--output", "pretty", ]); let stdout = ""; child.stdout.on("data", (data) => { stdout += data.toString(); }); child.on("exit", (code) => { if (code !== 0) { logger.error(`Failed to get proxymock version - exit code: ${code}`); resolve(null); return; } // With --output pretty, it just prints the version string directly const version = stdout.trim(); resolve(version); }); child.on("error", (err) => { logger.error( `Error spawning proxymock for version check: ${err.message}`, ); resolve(null); }); }); }