@curvenote/cli
Version:
CLI Client library for Curvenote
35 lines (34 loc) • 1.78 kB
JavaScript
import { join } from 'node:path';
import fs from 'node:fs';
import { localArticleToPdf, localArticleToTex, localArticleToWord, localArticleToJats, localProjectToMeca, localArticleToTypst, createTempFolder, } from 'myst-cli';
import { OxaTransformer } from './transforms/index.js';
import { oxaLinkToMarkdown } from './sync/pull/markdown.js';
export const localExportWrapper = (exportLocalArticle, defaultOptions) => async (session, path, filename, opts, templateOptions) => {
let localFolder;
let localPath;
if (fs.existsSync(path)) {
session.log.info(`🔍 Found local file to export: ${path}`);
localPath = path;
}
else {
session.log.info(`🌍 Downloading: ${path}`);
const localFilename = 'output.md';
localFolder = createTempFolder(session);
localPath = join(localFolder, localFilename);
await oxaLinkToMarkdown(session, path, localFilename, { path: localFolder });
}
const results = await exportLocalArticle(session, localPath, { ...defaultOptions, filename, projectPath: localFolder, ...opts }, templateOptions, [new OxaTransformer(session)]);
if (localFolder) {
results.tempFolders.push(localFolder);
}
return results;
};
export const oxaLinkToPdf = localExportWrapper(localArticleToPdf, { force: true });
export const oxaLinkToTex = localExportWrapper(localArticleToTex, { force: true });
export const oxaLinkToTypst = localExportWrapper(localArticleToTypst, { force: true });
export const oxaLinkToWord = localExportWrapper(localArticleToWord, {
force: true,
template: 'curvenote',
});
export const oxaLinkToJats = localExportWrapper(localArticleToJats, { force: true });
export const oxaLinkToMeca = localExportWrapper(localProjectToMeca, { force: true });