tooltwist
Version:
Tooltwist Command Line Interface
133 lines (114 loc) • 3.79 kB
JavaScript
var Log = require('./log'),
Config = require('./config'),
fs = require('fs'),
mkdirp = require('mkdirp');
/*
* Invoke Gradle to build and run the Tooltwist server.
*/
exports.runGradle = function(/*startCallback, endCallback*/) {
Log.log("Starting Gradle to build and run the server.");
Log.log();
Log.debug('isController:', Config.IS_CONTROLLER);
// gradle tomcatRun -DTOOLTWIST_HOME=${TOOLTWIST_HOME} -DXms128m -DXmx512m
// gradle run_tomcat_and_phase2 -DTOOLTWIST_HOME=${TOOLTWIST_HOME} -DXms128m -DXmx512m
var task = Config.USE_PHASE2 ? 'run_tomcat_and_phase2' : 'designer';
Log.debug("task: " + task)
var spawn = require('child_process').spawn;
var args = [
task,
'-DTOOLTWIST_HOME=' + Config.TOOLTWIST_HOME,
'-DXms256m',
'-DXmx1024m'
];
if (Log.getLevel() == Log.DEBUG) {
args.push('-d');
} else if (Log.getLevel() == Log.INFO) {
args.push('-i');
} else if (Log.getLevel() == Log.QUIET) {
args.push('-q');
}
var options = {
cwd: Config.BUILD_DIR
};
// Decide which gradle wrapper script to use
var cmd ='./gradlew'
//ZZZ check for Windows
var isWin = /^win/.test(process.platform);
if (isWin) {
cmd ='gradlew.bat'
}
// Display useful debug
Log.log('$ cd ', Config.BUILD_DIR)
var debugMsg = '$ ' + cmd;
for (var i = 0; i < args.length; i++) { debugMsg += ' ' + args[i]; }
Log.log(debugMsg)
// Run the command
var child = spawn(cmd, args, options);
// Echo the output of the gradle command
child.stdout.on('data', function (data) {
var str = '' + data;
str = str.replace(/\n/g, "\n ")
process.stdout.write(str);
// Look for the message saying the server has started
if (/The Server is running at http:/.test(data)) {
Config.plugin.tomcatRunning();
Log.log(' Default log file is ' + Config.HIDDEN_DIR + '/tooltwist.log')
// if (startCallback) {
// startCallback();
// }
}
});
child.stderr.on('data', function (data) {
var str = '' + data;
str = str.replace(/\n/g, "\n ")
process.stderr.write(str);
});
// Handle the process completion.
child.on('close', function (code) {
Log.debug('child process exited with code ' + code);
Config.plugin.afterPhase1(code);
// if (endCallback) {
// endCallback(code);
// }
});
};
/**
* Check we have the gradle wrapper. This is a shell script (Unix) or batch
* file (Windows) that will download gradle if it is not installed then run
* the Gradle build. This is a standard Gradle feature.
*/
exports.checkGradleWrapper = function(targetDir) {
Log.debug();
Log.debug('checkGradleWrapper()')
Log.debug('create gradle wrapper in ' + targetDir);
mkdirp.sync(targetDir + '/gradle/wrapper');
// gradlew
var to = targetDir + '/gradlew';
if ( !fs.existsSync(to)) {
var from = __dirname + "/../templates/gradleWrapper/gradlew"
var output = fs.readFileSync(from, "utf8");
fs.writeFileSync(to, output, { encoding: 'utf8' });
}
fs.chmodSync(to, '544');
// gradlew.bat
var to = targetDir + '/gradlew.bat';
if ( !fs.existsSync(to)) {
var from = __dirname + "/../templates/gradleWrapper/gradlew.bat"
var output = fs.readFileSync(from, "utf8");
fs.writeFileSync(to, output, { encoding: 'utf8' });
}
// gradle-wrapper.jar
var to = targetDir + '/gradle/wrapper/gradle-wrapper.jar';
if ( !fs.existsSync(to)) {
var from = __dirname + "/../templates/gradleWrapper/gradle/wrapper/gradle-wrapper.jar"
var output = fs.readFileSync(from);
fs.writeFileSync(to, output);
}
// gradle-wrapper.properties
var to = targetDir + '/gradle/wrapper/gradle-wrapper.properties';
if ( !fs.existsSync(to)) {
var from = __dirname + "/../templates/gradleWrapper/gradle/wrapper/gradle-wrapper.properties"
var output = fs.readFileSync(from, "utf8");
fs.writeFileSync(to, output, { encoding: 'utf8' });
}
}