@curvenote/cli
Version:
CLI Client library for Curvenote
63 lines (62 loc) • 2.65 kB
JavaScript
import path from 'node:path';
import fs from 'node:fs';
import { version as mystCliVersion } from 'myst-cli';
import { isDirectory } from 'myst-cli-utils';
import CurvenoteVersion from '../version.js';
function packageJsonInFolder(folder) {
const packageJson = path.join(folder, 'package.json');
if (fs.existsSync(packageJson))
return packageJson;
}
export function logVersions(session, result, debug = true) {
var _a;
const versions = [];
Object.entries((_a = result === null || result === void 0 ? void 0 : result.versions) !== null && _a !== void 0 ? _a : {}).forEach(([name, p]) => {
var _a;
versions.push([
name,
p.version ? `${p.version}` : 'Package Not Found',
`Required: ${((_a = p.wanted) === null || _a === void 0 ? void 0 : _a.raw) || ''}`,
p.isSatisfied ? '✅' : '⚠️',
]);
});
versions.push(['myst-cli', mystCliVersion]);
versions.push(['curvenote', CurvenoteVersion]);
const siteTemplatePackageJsons = [];
const siteTemplateFolder = path.join(session.buildPath(), 'templates', 'site');
if (fs.existsSync(siteTemplateFolder)) {
fs.readdirSync(siteTemplateFolder)
.map((folder) => path.join(siteTemplateFolder, folder))
.filter((folder) => isDirectory(folder))
.forEach((folder) => {
siteTemplatePackageJsons.push(packageJsonInFolder(folder));
fs.readdirSync(folder)
.map((subfolder) => path.join(folder, subfolder))
.filter((subfolder) => isDirectory(subfolder))
.forEach((subfolder) => {
siteTemplatePackageJsons.push(packageJsonInFolder(subfolder));
});
});
}
siteTemplatePackageJsons
.filter((file) => !!file)
.forEach((file) => {
try {
// TODO: Improve this to tell you more about themes
const packageJson = JSON.parse(fs.readFileSync(file).toString());
if (packageJson.name && packageJson.version) {
versions.push([packageJson.name, packageJson.version]);
}
}
catch (error) {
// pass
}
});
const versionString = versions
.map(([n, v, r, c]) => {
var _a;
return `\n - ${n.padEnd(25, ' ')}${v.padStart(10, ' ').padEnd(15, ' ')}${(_a = r === null || r === void 0 ? void 0 : r.padEnd(25)) !== null && _a !== void 0 ? _a : ''}${c !== null && c !== void 0 ? c : ''}`;
})
.join('');
session.log[debug ? 'debug' : 'info'](`\n\nCurvenote CLI Versions:${versionString}\n\n`);
}