blob: 5e30807533d6f6a71f54dc39d0af5d4cd4a73514 [file] [log] [blame]
#!/usr/bin/env node
/*
*
* Copyright 2013, 2014 Canonical Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
var exec = require('child_process').exec;
exports.check_reqs = function (callback) {
if (!checkNodeDependencies()) {
installNodeDependencies(callback);
} else {
// don't check platform dependencies yet, as they depend on the target
// architecture; the base cordova / node / npm install should be
// sufficient at this stage
callback();
}
};
function checkNodeDependencies() {
try {
require.resolve("shelljs");
require.resolve("colors");
require.resolve("optimist");
require.resolve("q");
} catch(e) {
// One or more dependencies are missing, need installation.
return false;
}
return true;
}
function installNodeDependencies(callback) {
var block = true;
exec('npm install', {cwd: __dirname}, function (error, stdout, stderr) {
block = false;
if (error !== null) {
console.error('ERROR : running \'npm install\' is npm installed? ' + error);
console.error(stderr);
process.exit(error.code);
}
});
function wait() {
if (block) {
setTimeout(wait, 1500);
} else {
callback();
}
};
setTimeout(wait, 1500);
}