#!/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); }