eunomia-controller
Version:
75 lines (67 loc) • 2.59 kB
JavaScript
;
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);
}
}
});
};