UNPKG

@curvenote/cli

Version:
26 lines (25 loc) 1.16 kB
import { writeFileToFolder } from 'myst-cli-utils'; import { resolvePath } from '../../../utils/index.js'; export async function writeBibtex(session, references, filename = 'main.bib', opts = { alwaysWriteFile: true }) { const seen = []; const bibliography = Object.entries(references) .map(([, { label, bibtex }]) => { if (seen.indexOf(label) !== -1) { session.log.debug(`Dropping duplicate reference ${label}`); return null; } seen.push(label); return bibtex; }) .filter((item) => item != null); if (bibliography.length === 0 && !opts.alwaysWriteFile) { session.log.debug('No references to write for the project.'); return; } const pathname = resolvePath(opts.path, filename); session.log.debug(`Exporting references to ${pathname}`); const bibWithNewLine = `${bibliography.join('\n\n')}\n`.replace(/&/g, '\\&'); session.log.debug(`Concatenated bibtex content at ${bibWithNewLine.length} characters`); writeFileToFolder(pathname, bibWithNewLine, { encoding: 'utf8' }); session.log.debug(`Wrote to ${pathname} successfully`); }