UNPKG

arredemo

Version:

Instantly build a static site for your package

76 lines (60 loc) 1.77 kB
import fsPromises from 'fs/promises' import {readFileSync} from 'fs' import os from 'os' import path from '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(e) {} 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}