UNPKG

arredemo

Version:

Instantly build a static site for your package

80 lines (66 loc) 1.83 kB
import { readFileSync } from "node:fs" import fsPromises from "node:fs/promises" import os from "node:os" import path from "node:path" import prompts from "prompts" const arreJsonPath = (pkgPath) => path.join(pkgPath, "arredemo.json") async function readJsonFile(jsonPath) { try { const data = await fsPromises.readFile(jsonPath) const obj = JSON.parse(data) return obj } catch (err) { console.log(err) return {} } } function readJsonFileSync(jsonPath) { try { const data = readFileSync(jsonPath, { encoding: "utf8", flag: "r" }) const obj = JSON.parse(data) return obj } catch (err) { console.log(err) return {} } } function __objectToJson(config) { return JSON.stringify(config, null, 2) + os.EOL } function _objectToJs(config) { return `const _obj = ${__objectToJson(config)}; \n\n export default _obj;` } async function _saveFileWithConfirm(filename, content, force, message) { try { await access(filename) if (!force) { const questions = [ { type: "confirm", name: "overwrite", message: message || `${path.basename(filename)} already exists. Do you wanrt to overwrite it?`, initial: false } ] const answers = await prompts(questions) if (answers.overwrite !== true) { return } } } catch (_) {} await fsPromises.writeFile(filename, content) } async function saveObjectToJsonWithConfirm(filename, obj, force) { await _saveFileWithConfirm(filename, __objectToJson(obj), force) } async function saveObjectToJsWithConfirm(filename, obj, force) { await _saveFileWithConfirm(filename, _objectToJs(obj), force) } export { arreJsonPath, readJsonFile, readJsonFileSync, saveObjectToJsonWithConfirm, saveObjectToJsWithConfirm }