@@ -10,13 +10,14 @@ module.exports = function (__dirname) {
1010 return preuninstall ( __dirname ) ;
1111 }
1212 } ;
13- }
13+ } ;
1414
1515var fs = require ( 'fs' ) ;
1616var os = require ( 'os' ) ;
1717var path = require ( 'path' ) ;
1818var util = require ( 'util' ) ;
1919var mkdirp = require ( 'mkdirp' ) ;
20+ var glob = require ( 'glob' ) ;
2021
2122function generateHookName ( pkg , hook ) {
2223 return pkg . name + '.js' ;
@@ -57,17 +58,28 @@ function forEachHook(pkgdir, callback) {
5758
5859 if ( ns . hooks ) {
5960 ns . hooks . forEach ( function ( hook ) {
60- callback ( hooksDir , pkg , hook )
61+ callback ( hooksDir , pkg , hook ) ;
6162 } ) ;
6263 }
6364}
6465
66+ function hookInstalled ( hookDir , pkg , hook ) {
67+ var hookBaseName = pkg . name ;
68+ var hookGlob = path . join ( hookDir , "*" + hookBaseName + "*" ) ;
69+ var files = glob . sync ( hookGlob ) ;
70+ return files . length > 0 ;
71+ }
72+
6573function postinstall ( pkgdir ) {
6674 forEachHook ( pkgdir , function ( hooksDir , pkg , hook ) {
6775 var hookDir = path . join ( hooksDir , hook . type ) ;
6876 if ( ! fs . existsSync ( hookDir ) ) {
6977 mkdirp . sync ( hookDir ) ;
7078 }
79+ if ( hookInstalled ( hookDir , pkg , hook ) ) {
80+ console . log ( 'Hook already installed: ' + pkg . name ) ;
81+ return ;
82+ }
7183 var hookFileName = generateHookName ( pkg , hook ) ;
7284 var hookPath = path . join ( hookDir , hookFileName ) ;
7385
0 commit comments