gui-tool
Version:
Generating of ExtJS prototypes and skeleton applications with Siesta tests has never been so easy and fast.
97 lines (82 loc) • 2.89 kB
JavaScript
;
var mu = require('mu2'),
fs = require('fs'),
path = require('path'),
wrench = require('wrench'),
extend = require('./extend'),
beautify = require('js-beautify').js_beautify;
var verbose = false;
exports.createDirectoryTree = function(rootDirName, projectTree, removeIfExist) {
var rootDirPath = path.resolve(rootDirName);
if (fs.existsSync(rootDirPath)) {
if (!removeIfExist) {
console.log('Directory exists! ' + rootDirPath);
return false;
}
console.log('Remove existing directory... (' + rootDirPath + ')');
wrench.rmdirSyncRecursive(rootDirPath);
}
fs.mkdirSync(rootDirPath);
projectTree.forEach(function(dir) {
var dirToCreate = path.resolve(path.join(rootDirName, dir));
if (verbose) {
console.log('Create "' + dirToCreate + '"');
}
fs.mkdirSync(dirToCreate);
});
return true;
};
exports.copyDir = function(context, opts) {
var sourceDirName = path.resolve(opts.sourceBaseDir, opts.dirName),
destDirName = path.resolve(opts.targetBaseDir, opts.dirName);
if (verbose) {
console.log('Copy dir from: ' + sourceDirName + ' to: ' + destDirName);
}
wrench.copyDirSyncRecursive(sourceDirName, destDirName, opts);
};
exports.copyFile = function(fileName, sourceBaseDir, targetBaseDir) {
if (verbose) {
console.log('copyFile...' + fileName);
}
var sourceFileName = path.resolve(sourceBaseDir, fileName),
destFileName = path.resolve(targetBaseDir, fileName);
if (verbose) {
console.log('Copy file from: ' + sourceFileName + ' to: ' + destFileName);
}
fs.writeFileSync(destFileName, fs.readFileSync(sourceFileName));
};
exports.processTemplate = function(context, opts) {
var templateFileName = path.resolve(opts.sourceBaseDir, opts.template),
fileName = path.resolve(opts.targetBaseDir, (opts.fileName ? opts.fileName : opts.template)),
buffer = '',
view = {},
fileType;
if (verbose) {
console.log('templateFileName: ' + templateFileName);
console.log('fileName: ' + fileName);
}
extend(view, context);
fileType = fileName.split('.');
fileType = fileType[fileType.length - 1];
if (fileType === 'js') {
if (verbose) {
console.log('js formatted: ' + fileName);
}
}
mu.compileAndRender(templateFileName, view)
.on('data', function(c) {
buffer += c.toString();
})
.on('end', function() {
if (fileType === 'js') {
buffer = beautify(buffer);
}
fs.writeFile(fileName,
buffer,
function(err) {
if (err) {
throw err;
}
});
});
};