gui-tool
Version:
A tool to generate an ExtJS prototype with Siesta tests.
84 lines (69 loc) • 2.81 kB
JavaScript
/*jshint node: true */
;
var mu = require('mu2'),
fs = require('fs'),
path = require('path'),
wrench = require('wrench'),
extend = require('./extend'),
beautify = require('js-beautify').js_beautify;
var verbose = true;
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, context) {
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);
if (verbose) console.log('fileName: ' + fileName);
extend(view, context);
fileType = fileName.split('.');
fileType = fileType[fileType.length -1];
if (fileType === 'js') {
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;
});
});
};