@curvenote/cli
Version:
CLI Client library for Curvenote
55 lines (54 loc) • 2.01 kB
JavaScript
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));
}
}