@ordino.ai/cli
Version:
ordino.ai global command line interface
58 lines (52 loc) • 1.42 kB
text/typescript
import * as packageJson from '../../../package.json';
interface VersionRequirements {
node: string;
npm: string;
}
interface ParsedVersionRequirements {
node: {
major: number;
minor: number;
patch: number;
};
npm: {
major: number;
minor: number;
patch: number;
};
}
function getVersionRequirementsFromPackageJson(): VersionRequirements {
const engines = (packageJson as any).engines;
if (!engines) {
return {
node: ">=20.8.1",
npm: ">=10.1.0"
};
}
return {
node: engines.node || ">=20.8.1",
npm: engines.npm || ">=10.1.0"
};
}
function parseVersionRequirement(versionString: string): { major: number; minor: number; patch: number } {
const cleanVersion = versionString.replace(/^[>=<~^]*v?/, '');
const parts = cleanVersion.split('.');
if (parts.length < 3) {
throw new Error(`Invalid version format: ${versionString}`);
}
return {
major: parseInt(parts[0], 10),
minor: parseInt(parts[1], 10),
patch: parseInt(parts[2], 10)
};
}
export function getVersionRequirements(): ParsedVersionRequirements {
const requirements = getVersionRequirementsFromPackageJson();
return {
node: parseVersionRequirement(requirements.node),
npm: parseVersionRequirement(requirements.npm)
};
}
export function getVersionRequirementsAsStrings(): VersionRequirements {
return getVersionRequirementsFromPackageJson();
}