@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
JavaScript
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);
});
});
}