From 5f5a11c1fa0248edfd42aca8b63034f9136c4a10 Mon Sep 17 00:00:00 2001 From: Hristo Deshev Date: Thu, 26 Nov 2015 18:19:57 +0200 Subject: [PATCH 1/2] Detect if hook has been installed and do nothing in that case. Do a fuzzy match, trying to handle cases like renaming a hook like nativescript-dev-typescript.js to 20-nativescript-dev-typescript.js when having several hooks executing in a defined order. --- index.js | 16 ++++++++++++++-- package.json | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) 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..d18f180 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "url": "https://github.com/NativeScript/nativescript-hook.git" }, "dependencies": { + "glob": "^6.0.1", "mkdirp": "^0.5.1" } } From 508e135632c674ff3bff228c357dde829e216ceb Mon Sep 17 00:00:00 2001 From: Hristo Deshev Date: Thu, 26 Nov 2015 18:20:19 +0200 Subject: [PATCH 2/2] Bump version to 0.2.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d18f180..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": {