Skip to content

Commit

Permalink
chore: added comments to beforepluginhook
Browse files Browse the repository at this point in the history
  • Loading branch information
ethanneff committed Dec 9, 2016
1 parent f6c5eca commit 9a99014
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 19 deletions.
36 changes: 28 additions & 8 deletions hooks.es6/beforePluginInstallHook.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,34 @@
'use strict';

function installNodeModule(exec, modules, callback) {
// installs the node modules via npm install one at a time
// @return {callback(error)}
function installNodeModules(exec, modules, callback) {
// base case
if (modules.length <= 0) {
return callback(false);
}

// install one at a time
var module = modules.pop();
var install = 'npm install --prefix ./plugins/io.branch.sdk -D ' + module;

console.log('Installing "' + module + '"');

var install = 'npm install --prefix ./plugins/io.branch.sdk -D ' + module;
exec(install, function(err, stdout, stderr) {
// handle error
if (err) {
console.error('Failed to install Branch Dependency: "' + module + '"');
return callback(true);
}
// next module
else {
installNodeModule(exec, modules, callback);
installNodeModules(exec, modules, callback);
}
});
}

function getUninstalledNodeModules(dependencies) {
// checks to see which node modules need to be installed
// @return {[string]} of node modules from package.json.dependencies
function getNodeModulesToInstall(dependencies) {
var modules = [];
for (var module in dependencies) {
if (dependencies.hasOwnProperty(module)) {
Expand All @@ -34,6 +42,8 @@ function getUninstalledNodeModules(dependencies) {
return modules;
}

// if the Branch SDK package has already been installed
// @return {boolean} based on .installed file is found
function getPackageInstalled(filesave, installFlagLocation) {
try {
var exists = filesave.readFileSync(installFlagLocation);
Expand All @@ -43,12 +53,16 @@ function getPackageInstalled(filesave, installFlagLocation) {
}
}

// set that the Branch SDK package has been installed
// @return {void} based on .installed file is created
function setPackageInstalled(filesave, installFlagLocation) {
filesave.closeSync(filesave.openSync(installFlagLocation, 'w'));
}

// hook's entry point
// hooks entry point
// @return {void} based on async npm install completion
module.exports = function(context) {
// properties
var q = context.requireCordovaModule('q');
var async = new q.defer();
var filesave = require('fs');
Expand All @@ -58,20 +72,26 @@ module.exports = function(context) {
var installFlagLocation = path.join(context.opts.projectRoot, 'plugins', context.opts.plugin.id, installFlagName);
var dependencies = require(path.join(context.opts.projectRoot, 'plugins', context.opts.plugin.id, 'package.json')).dependencies;

// only run once
if (getPackageInstalled(filesave, installFlagLocation)) {
return;
}

var modules = getUninstalledNodeModules(dependencies);
installNodeModule(exec, modules, function(err) {
// install node modules
var modules = getNodeModulesToInstall(dependencies);
installNodeModules(exec, modules, function(err) {
// handle error
if (err) {
console.error('Failed to install the Branch SDK');
}
// only run once
else {
setPackageInstalled(filesave, installFlagLocation);
}
// async complete
async.resolve();
});

// wait until callbacks from the all the npm install complete
return async.promise;
};
45 changes: 34 additions & 11 deletions hooks/beforePluginInstallHook.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,35 @@
'use strict';

function installNodeModule(exec, modules, callback) {
// installs the node modules via npm install one at a time
// @return {callback(error)}

function installNodeModules(exec, modules, callback) {
// base case
if (modules.length <= 0) {
return callback(false);
}

// install one at a time
var module = modules.pop();
var install = 'npm install --prefix ./plugins/io.branch.sdk -D ' + module;

console.log('Installing "' + module + '"');

var install = 'npm install --prefix ./plugins/io.branch.sdk -D ' + module;
exec(install, function (err, stdout, stderr) {
// handle error
if (err) {
console.error('Failed to install Branch Dependency: "' + module + '"');
return callback(true);
} else {
installNodeModule(exec, modules, callback);
}
// next module
else {
installNodeModules(exec, modules, callback);
}
});
}

function getUninstalledNodeModules(dependencies) {
// checks to see which node modules need to be installed
// @return {[string]} of node modules from package.json.dependencies
function getNodeModulesToInstall(dependencies) {
var modules = [];
for (var module in dependencies) {
if (dependencies.hasOwnProperty(module)) {
Expand All @@ -33,6 +43,8 @@ function getUninstalledNodeModules(dependencies) {
return modules;
}

// if the Branch SDK package has already been installed
// @return {boolean} based on .installed file is found
function getPackageInstalled(filesave, installFlagLocation) {
try {
var exists = filesave.readFileSync(installFlagLocation);
Expand All @@ -42,12 +54,16 @@ function getPackageInstalled(filesave, installFlagLocation) {
}
}

// set that the Branch SDK package has been installed
// @return {void} based on .installed file is created
function setPackageInstalled(filesave, installFlagLocation) {
filesave.closeSync(filesave.openSync(installFlagLocation, 'w'));
}

// hook's entry point
// hooks entry point
// @return {void} based on async npm install completion
module.exports = function (context) {
// properties
var q = context.requireCordovaModule('q');
var async = new q.defer();
var filesave = require('fs');
Expand All @@ -57,19 +73,26 @@ module.exports = function (context) {
var installFlagLocation = path.join(context.opts.projectRoot, 'plugins', context.opts.plugin.id, installFlagName);
var dependencies = require(path.join(context.opts.projectRoot, 'plugins', context.opts.plugin.id, 'package.json')).dependencies;

// only run once
if (getPackageInstalled(filesave, installFlagLocation)) {
return;
}

var modules = getUninstalledNodeModules(dependencies);
installNodeModule(exec, modules, function (err) {
// install node modules
var modules = getNodeModulesToInstall(dependencies);
installNodeModules(exec, modules, function (err) {
// handle error
if (err) {
console.error('Failed to install the Branch SDK');
} else {
setPackageInstalled(filesave, installFlagLocation);
}
// only run once
else {
setPackageInstalled(filesave, installFlagLocation);
}
// async complete
async.resolve();
});

// wait until callbacks from the all the npm install complete
return async.promise;
};

0 comments on commit 9a99014

Please sign in to comment.