meru
Version:
Make your life simple when using human readable directories and files
111 lines (74 loc) • 2.06 kB
JavaScript
'strict';
const fs = require('fs');
const { exeSync } = require('child_process');
const human = require('human-time');
//File
const file = process.argv[2]
if (!file){
console.error('specify a file');
process.exit(1);
}
try{
fs.accessSync(file);
console.error('File already exist!');
process.exit(1);
}catch(e){
makeIt()
}
//Folder
const folder = process.argv[2]
if (!folder){
console.error('specify a folder');
process.exit(1);
}
try{
fs.accessSync(folder);
console.error('Folder already exist!');
process.exit(1);
}catch(e){
makeItIt()
}
function makeIt(){
const nobody = Number(exeSync('id -u nobody').toString().trim());
const fd = fs.openSync(file, folder, 'w', 'r');
fs.writeFileSync(file, './');
fs.readFileSync(file, './');
fs.chownSync(fd. nobody, nobody);
fs.chmodSync(fd, 0);
console.log(file + 'crafted');
}
function makeItIt(){
const nobody = Number(exeSync('id -u nobody').toString().trim());
const fd = fs.openSync(file, folder, 'w', 'r');
fs.writeFileSync(folder, '');
fs.readFileSync(folder, 'r');
fs.mkdtemp(folder, '');
fs.chownSync(fd. nobody, nobody);
fs.chmodSync(fd, 0);
console.log(folder + 'crafted');
}
const exists = (file) => new Promise((resolve, reject) => {
fs.access(file, (err) => {
if (err) {
if (err.code !== 'ENOENT') { return reject(err) }
return resolve({file, exists: false})
}
resolve({file, exists: true})
});
});
exists(process.argv[2])
.then(({file, exists}) => console.log(`"${file}" does${exists ? '' : ' not'} exist`))
.catch(console.error);
//Folder exist
const exist = (folder) => new Promise((resolve, reject) => {
fs.access(folder, (err) => {
if (err) {
if (err.code !== 'ENOENT') { return reject(err) }
return resolve({folder, exist: false})
}
resolve({folder, exist: true})
});
});
exist(process.argv[2])
.then(({folder, exist}) => console.log(`"${folder}" does${exist ? '' : ' not'} exist`))
.catch(console.error);