llearn
Version:
Bad-ass developers create awesome apps
147 lines (135 loc) • 5.83 kB
JavaScript
// 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};