UNPKG

llearn

Version:

Bad-ass developers create awesome apps

147 lines (135 loc) 5.83 kB
// console.log("Starting helper_io.js..."); // helper_io.js // Purpose: The purpose of this.... // Date Created: 6/1/2018 // Created by : Perez Lamed van Niekerk // ------------------------------------------------------ /*jshint esversion: 6 */ const _log = console.log; const _JSONstr = (object) => JSON.stringify(object, undefined, 2); const _logJSON = (object) => console.log(_JSONstr(object)); // ------------------------------------------------------ const _fs = require('fs'); const _readLine = require('readline'); const _$ = require('larray'); const _clipboard = require('copy-paste'); // npm i copy-paste -s var Helper_IO = () => { var exist = (dirOrFile) => { /* function will check if a directory exists */ // _log({err}); return new Promise((resolve, reject) => { _fs.stat(dirOrFile, function (err, stats) { // _log({err}); if (err) reject(err); else resolve(dirOrFile); }); }) }; var readFile = (file) => { /* Read contents of a file */ return new Promise((resolve, reject) => { exist(file) .then(() => { _fs.readFile(file, function (err, data) { if (err) reject(err); if (data) resolve(data.toString('utf8')); }); }) .catch((err) => reject(err)); }); }; var writeFile = (file, text) => { /* Write text to a file */ return new Promise((resolve, reject) => { _fs.writeFile(file, text, function (err) { if (err) reject(err); resolve(); }); }) }; var folderFiles = (folder) => { /* Return files in a folder */ return new Promise((resolve, reject) => { /* Check if folder exist */ exist(folder) .catch((err) => reject(err)) .then(() => { _fs.readdir(folder, (err, items) => { if (err) reject(err); /* Only return files */ let files = []; for (let ii = 0; ii < items.length; ii++) { let file = folder + items[ii]; let stats = _fs.statSync(file); if (stats.isFile()) files.push(file); } resolve(files); }); }) }); }; var folderFolders = (folder) => { /* return folders in a folder */ return new Promise((resolve, reject) => { /* Check if folder exist */ exist(folder) .catch((err) => reject(err)) .then(() => { _fs.readdir(folder, (err, items) => { if (err) reject(err); /* Only return files */ let dirs = []; for (let ii = 0; ii < items.length; ii++) { let file = folder + items[ii]; let stats = _fs.statSync(file); if (stats.isDirectory()) dirs.push(file + '\\'); } resolve(dirs); }); }) }); }; var PasteFrom = () => { return new Promise((resolve, reject) => { _clipboard.paste((err, text) => { resolve(text); }); }) }; /* Reads input from the user. If no default value and user press enter, reject */ var readLine = (question, defaultValue) => { return new Promise((resolve, reject) => { const rl = _readLine.createInterface({ input: process.stdin, output: process.stdout }); let clipboard = false; if (_$.Ok(defaultValue)) { question = question + ` (${defaultValue}): `; } if (question.includes('&&')) { question = question.replace('&&', '') + ' ( enter && to use clipboard) '; clipboard = true; } rl.question(question, (answer) => { /* evaluate the user input */ rl.close(); if (_$.notOk(answer)) { // _log({answer}); if (_$.Ok(defaultValue)) resolve(defaultValue); else reject('readLine() You did not make a valid choice!'); } else if (answer === '&&') { // _log({answer}); answer = _clipboard.paste(); // _log({answer}); resolve(answer); } else resolve(answer); }); } ); }; return {exist, readFile, writeFile, folderFiles, folderFolders, readLine} }; // Exports -------------------------- module.exports = {IO: Helper_IO};