budgie-cli
Version:
Node CLI for Budgie.
35 lines (27 loc) • 1.39 kB
text/typescript
import chalk from "chalk";
import * as fs from "mz/fs";
import * as path from "path";
import { ILogger } from "../logger";
interface IPackageInfo {
version: string;
}
const getPackageVersion = async (filePath: string): Promise<string> => {
const rawText = (await fs.readFile(filePath)).toString();
const packageInfo: IPackageInfo = JSON.parse(rawText);
return packageInfo.version;
};
const logVersion = (logger: ILogger, alias: string, version: string): void => {
logger.log(`${chalk.bold(alias)} version: ${chalk.bold.green(version)}`);
};
export const printCliVersions = async (logger: ILogger): Promise<void> => {
const [budgieVersion, cliVersion, tsBudgieVersion, tsVersion] = await Promise.all([
getPackageVersion(path.join(__dirname, "../../package.json")),
getPackageVersion(require.resolve("budgie").replace(path.normalize("lib/index.js"), "package.json")),
getPackageVersion(require.resolve("ts-budgie").replace(path.normalize("src/index.js"), "package.json")),
getPackageVersion(require.resolve("typescript").replace(path.normalize("lib/typescript.js"), "package.json")),
]);
logVersion(logger, "budgie-cli", cliVersion);
logVersion(logger, "budgie", budgieVersion);
logVersion(logger, "ts-budgie", tsBudgieVersion);
logVersion(logger, "typescript", tsVersion);
};