RandomChad/website/modules/parse-fs.js
2021-10-16 13:20:49 +02:00

61 lines
1.5 KiB
JavaScript

const { promises: fs } = require( 'fs' )
const { normalize } = require('path')
const del = require( 'del' )
const mkdirp = require( 'mkdirp' )
const wait = ms => new Promise( res => setTimeout( res, ms ) )
// Promise structure for writing a file to disk
const writefile = fs.writeFile
// Check if a resource exists
const exists = what => fs.access( what ).then( f => true ).catch( f => false )
// Delete a folder through the promise api
const delp = async what => {
const file = await exists( what )
if( file ) return del.sync( [ what ] )
}
// Make directory if it does not exist yet
const mkdir = async path => {
const file = await exists( path )
// console.log( file ? '✅ exists ' : '🛑 not exists ', path )
if( !file ) {
// console.log( '👵 creating ', path )
const folder = await mkdirp( path )
// await wait( 5000 )
// console.log( 'Creation of ', path, folder )
// await wait( 5000 )
// file = await exists( path )
}
}
// Read the contents of these files and return as an array
const readdata = ( path, filename ) => fs.readFile( normalize( `${path}/${filename}` ), 'utf8' ).then( data => ( { filename: filename, data: data } ) )
// Safely write a file by chacking if the path exists
const safewrite = async ( path, file, content ) => {
try {
path = normalize( path )
await mkdir( path )
await writefile( path + file, content )
} catch( e ) {
console.log( `Error writing ${ path }${ file }: `, e )
}
}
module.exports = {
write: writefile,
swrite: safewrite,
del: delp,
mkdir: mkdir,
readFile: readdata,
exists: exists
}