@mintlify/cli
Version:
The Mintlify CLI
50 lines (43 loc) • 1.79 kB
text/typescript
import { getTargetMintVersion, downloadTargetMint } from '@mintlify/previewing';
import { execSync } from 'node:child_process';
import { buildLogger, getLatestCliVersion, getVersions } from './helpers.js';
export const update = async ({ packageName }: { packageName: string }) => {
const logger = buildLogger(`Updating ${packageName} to the latest version...`);
const { cli: existingCliVersion, client: existingClientVersion } = getVersions();
const latestCliVersion = getLatestCliVersion(packageName);
const latestClientVersion = await getTargetMintVersion(logger);
const isUpToDate =
existingCliVersion &&
existingClientVersion &&
latestClientVersion &&
latestCliVersion &&
latestCliVersion.trim() === existingCliVersion.trim() &&
latestClientVersion.trim() === existingClientVersion.trim();
if (isUpToDate) {
logger.succeed('Already up to date.');
return;
}
if (existingCliVersion && latestCliVersion.trim() !== existingCliVersion.trim()) {
try {
logger.text = `Updating ${packageName} package...`;
execSync(`npm install -g ${packageName}@latest --silent`);
} catch (err) {
logger.fail(`Failed to update ${packageName}@latest`);
process.exit(1);
}
}
if (latestClientVersion && latestClientVersion !== existingClientVersion) {
try {
logger.text = `Updating Mintlify client to ${latestClientVersion}...`;
await downloadTargetMint({
logger,
targetVersion: latestClientVersion,
existingVersion: existingClientVersion ?? null,
});
} catch (err) {
logger.fail(`Failed to update Mintlify client to ${latestClientVersion}`);
process.exit(1);
}
}
logger.succeed(`Updated ${packageName} to the latest version: ${latestCliVersion}`);
};