UNPKG

kathairo

Version:

A CLI utility for processing USFM.

68 lines (53 loc) 1.67 kB
import { readFile, writeFile, stat, readdir } from 'fs/promises'; import path from "path"; import { log } from "./logger.js"; async function isDirectory(path) { try { const result = await stat(path); return result.isDirectory(); } catch (e) { log('error', e.message); return false; } } async function isFile(path, quiet) { try { const result = await stat(path); return result.isFile(); } catch (e) { log.error(e.message); return false; } } async function loadFile(filePath) { return { path: filePath, content: await readFile(filePath) }; } async function loadDirectory(directoryPath, quiet) { log('info', `Processing directory: ${directoryPath}`); const directoryFilePaths = await readdir(directoryPath) log('info', directoryFilePaths); const contentPromises = directoryFilePaths.map(async directoryFilePath => { const fullPath = path.join(directoryPath, directoryFilePath); if (await isFile(fullPath)) { return await loadFile(fullPath); } }); const contents = await Promise.all(contentPromises); return contents.filter(content => content); } export async function createFile(destination, data) { return await writeFile(destination, data); } export async function loadContent(path, quiet) { if (await isFile(path, quiet)) { return [await loadFile(path, quiet)] } if (await isDirectory(path, quiet)) { return await loadDirectory(path, quiet); } }; export async function getVersion() { const packageJsonText = await readFile(new URL('../package.json', import.meta.url), 'utf8'); const packageJson = JSON.parse(packageJsonText); return packageJson.version; }