const fs = require( 'fs' ) const { readFile } = require( './parse-fs' ) // Grab all pug files from the root of the source directory const getJSONs = path => new Promise( ( resolve, reject ) => { fs.readdir( path, ( err, files ) => { if ( err ) return reject( err ) // This will return an array of file names that contain .pug resolve( files.filter( file => { return file.includes( '.json' ) || file.includes( '.js' ) } ) ) } ) } ) // Validate the structure of the json filename and get the lang for it // Json file syntax should be language.json ( e.g. en.json or nl.json ) const validateJson = json => new Promise( ( resolve, reject ) => json.lang && json.slug.includes( '/' ) && resolve( json ) || reject( 'Invalid json' ) ) // Return the json files ( as pug syntax ) // Grab all .json files const getContent = path => getJSONs( path ) // Grab the content of all .json files // Get the content of each file with it's language string, outputs { filename, content } .then( files => Promise.all( files.map( async file => { // Load js module if( file.includes( 'js' ) ) return require( `${path}/${file}` ) // Extract json data from strings return readFile( path, file ).then( string => JSON.parse( string.data ) ) } ) ) ) // Validate that the jsons are well-formatted .then( allJsons => Promise.all( allJsons.map( json => validateJson( json ) ) ) ) module.exports = getContent