UNPKG

@curvenote/cli

Version:
55 lines (54 loc) 2.01 kB
import inquirer from 'inquirer'; import path from 'node:path'; import { LogLevel, writeFileToFolder } from 'myst-cli-utils'; import { BlueskyTransformer, OxaTransformer, transformOxalinkStore, } from '../transforms/links/index.js'; import { startServer } from 'myst-cli'; import { compositeLoggerFactory } from '../session/logger.js'; export function resolvePath(optionalPath, filename) { if (optionalPath) return path.join(optionalPath, filename); if (path.isAbsolute(filename)) return filename; return path.join('.', filename); } export function versionIdToURL(versionId) { return `/blocks/${versionId.project}/${versionId.block}/versions/${versionId.version}`; } export async function confirmOrExit(message, opts) { if (opts?.yes) return; const question = await inquirer.prompt([ { name: 'confirm', message, type: 'confirm', default: false, }, ]); if (!question.confirm) { process.exit(); } } /** Add oxa link transformers to options */ export function addTransformersToOpts(session, opts) { return { ...opts, extraLinkTransformers: [ ...(opts.extraLinkTransformers ?? []), new BlueskyTransformer(), new OxaTransformer(session), ], extraTransforms: [...(opts.extraTransforms ?? []), transformOxalinkStore], }; } export function writeJsonLogs(session, name, logData) { writeFileToFolder(path.join(session.buildPath(), 'logs', name), JSON.stringify(logData, null, 2)); } export async function startServerWithLoggers(session, opts) { const server = await startServer(session, addTransformersToOpts(session, opts)); if (server) { // Initial change here, potential for upstreaming to myst-cli session.server = server; session.setLogger(compositeLoggerFactory({ websocket: LogLevel.debug, terminal: LogLevel.info }, process.cwd(), server.contentServer.sendJson)); } }