UNPKG

eunomia-controller

Version:

75 lines (67 loc) 2.59 kB
'use strict'; var fs = require('fs'); var ejs = require('ejs'); var path = require('path'); var system = require('./../../variables')('./eunomia.json'); exports.generate = function (writeToPath, srcImages) { return require('./../../task/index')('assets', function (resolve, reject) { var subDirectories = function subDirectories(src, sub) { var folders = fs.readdirSync(src).filter(function (file) { return fs.lstatSync(path.join(src, file)).isDirectory(); }).map(function (folder) { return { src: src, folder: '/' + folder, folderPath: sub + '/' + folder, fullPath: src + '/' + folder, files: fs.readdirSync(src + '/' + folder + '/').filter(function (file) { return !fs.lstatSync(path.join(src + '/' + folder + '/', file)).isDirectory(); }), target: writeToPath + 'assets/images' + sub + '/' + folder }; }); var subFolders = [].concat.apply([], folders.map(function (item) { return subDirectories(item.fullPath, item.folderPath); })); return folders.concat(subFolders); }; var copyFile = function copyFile(src, dest) { var readStream = fs.createReadStream(src); readStream.once('error', function (err) { console.log(err); }); readStream.once('end', function () {}); readStream.pipe(fs.createWriteStream(dest)); }; if (!fs.existsSync('./eunomia.json')) { reject("eunomia.json required within the root of the project"); } else { var eunomia = system; try { if (!fs.existsSync(writeToPath + 'assets')) { fs.mkdirSync(writeToPath + 'assets'); } if (!fs.existsSync(writeToPath + 'assets/images')) { fs.mkdirSync(writeToPath + 'assets/images'); } //TODO: Start from root subDirectories('' + srcImages, "").map(function (dir) { if (!fs.existsSync(writeToPath + 'assets/images' + dir.folderPath)) { fs.mkdirSync(writeToPath + 'assets/images' + dir.folderPath); } dir.files.map(function (file) { copyFile(dir.fullPath + '/' + file, dir.target + '/' + file); }); }); fs.readdirSync('' + srcImages).filter(function (file) { return !fs.lstatSync(path.join(srcImages + '/', file)).isDirectory(); }).map(function (file) { copyFile(srcImages + '/' + file, writeToPath + 'assets/images/' + file); }); resolve(); } catch (e) { reject(e); } } }); };