UNPKG

@curvenote/cli

Version:
58 lines (57 loc) 2.34 kB
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) { const versions = []; Object.entries(result?.versions ?? {}).forEach(([name, p]) => { versions.push([ name, p.version ? `${p.version}` : 'Package Not Found', `Required: ${p.wanted?.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]) => `\n - ${n.padEnd(25, ' ')}${v.padStart(10, ' ').padEnd(15, ' ')}${r?.padEnd(25) ?? ''}${c ?? ''}`) .join(''); session.log[debug ? 'debug' : 'info'](`\n\nCurvenote CLI Versions:${versionString}\n\n`); }