diff --git a/index.js b/index.js index 6543e20..3ae1f2a 100644 --- a/index.js +++ b/index.js @@ -10,13 +10,14 @@ module.exports = function (__dirname) { return preuninstall(__dirname); } }; -} +}; var fs = require('fs'); var os = require('os'); var path = require('path'); var util = require('util'); var mkdirp = require('mkdirp'); +var glob = require('glob'); function generateHookName(pkg, hook) { return pkg.name + '.js'; @@ -57,17 +58,28 @@ function forEachHook(pkgdir, callback) { if (ns.hooks) { ns.hooks.forEach(function (hook) { - callback(hooksDir, pkg, hook) + callback(hooksDir, pkg, hook); }); } } +function hookInstalled(hookDir, pkg, hook) { + var hookBaseName = pkg.name; + var hookGlob = path.join(hookDir, "*" + hookBaseName + "*"); + var files = glob.sync(hookGlob); + return files.length > 0; +} + function postinstall(pkgdir) { forEachHook(pkgdir, function (hooksDir, pkg, hook) { var hookDir = path.join(hooksDir, hook.type); if (!fs.existsSync(hookDir)) { mkdirp.sync(hookDir); } + if (hookInstalled(hookDir, pkg, hook)) { + console.log('Hook already installed: ' + pkg.name); + return; + } var hookFileName = generateHookName(pkg, hook); var hookPath = path.join(hookDir, hookFileName); diff --git a/package.json b/package.json index a9d2c7b..36a5001 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nativescript-hook", - "version": "0.2.0", + "version": "0.2.1", "description": "Helper module for installing hooks into NativeScript projects", "main": "index.js", "scripts": { @@ -13,6 +13,7 @@ "url": "https://github.com/NativeScript/nativescript-hook.git" }, "dependencies": { + "glob": "^6.0.1", "mkdirp": "^0.5.1" } }