mirror of
https://github.com/stronk-dev/RandomChad.git
synced 2025-07-05 18:35:10 +02:00
65 lines
1.7 KiB
JavaScript
65 lines
1.7 KiB
JavaScript
// promise based file parsing
|
|
const { del, mkdir } = require( __dirname + '/parse-fs' )
|
|
const { promises: fs } = require( 'fs' )
|
|
|
|
// Recursive copy library
|
|
const ncp = require( 'ncp' )
|
|
|
|
// Image parsing
|
|
const compressImage = require( __dirname + '/parse-images' )
|
|
|
|
// Promise ncp
|
|
const pncp = ( source, dest, opt ) => new Promise( ( resolve, reject ) => {
|
|
|
|
ncp( source, dest, opt, err => err ? reject( err ) : resolve() )
|
|
|
|
} )
|
|
|
|
const copyfolder = async ( source, destination, filename ) => {
|
|
|
|
await mkdir( destination )
|
|
|
|
// No clobber means no overwrites for existing files
|
|
await pncp( source, destination, { clobber: false } )
|
|
}
|
|
|
|
const copyassets = async ( site, filename ) => {
|
|
|
|
try {
|
|
|
|
const { extensions } = site.system.images
|
|
|
|
// Delete relevant assets
|
|
if( filename ) await del( `${ site.system.public }/assets/${ filename }` )
|
|
else await del( site.system.public + 'assets/*' )
|
|
|
|
// Copy entire asset folder
|
|
await copyfolder( site.system.source + 'assets', site.system.public + 'assets' )
|
|
|
|
// If single file, compress single file
|
|
const [ fullmatch, extOfFilename ] = ( filename && filename.match( /(?:.*)(?:\.)(.*)/ ) ) || [ 0, [] ]
|
|
if( extensions.includes( extOfFilename ) ) await compressImage( site, filename )
|
|
|
|
// If not a single file, grab the images and compress them
|
|
if( !filename ) {
|
|
|
|
const allAssets = await fs.readdir( `${ site.system.source }/assets/` )
|
|
const allImages = allAssets.filter( path => {
|
|
const [ fm, ext ] = ( path && path.match( /(?:.*)(?:\.)(.*)/ ) ) || []
|
|
return extensions.includes( ext )
|
|
} )
|
|
|
|
// Convert all
|
|
await Promise.all( allImages.map( img => compressImage( site, img ) ) )
|
|
|
|
}
|
|
|
|
} catch( e ) {
|
|
console.log( `Error copying assets: `, e )
|
|
throw e
|
|
}
|
|
|
|
|
|
}
|
|
|
|
module.exports = copyassets |