@@ -10,13 +10,14 @@ module.exports = function (__dirname) {
10
10
return preuninstall ( __dirname ) ;
11
11
}
12
12
} ;
13
- }
13
+ } ;
14
14
15
15
var fs = require ( 'fs' ) ;
16
16
var os = require ( 'os' ) ;
17
17
var path = require ( 'path' ) ;
18
18
var util = require ( 'util' ) ;
19
19
var mkdirp = require ( 'mkdirp' ) ;
20
+ var glob = require ( 'glob' ) ;
20
21
21
22
function generateHookName ( pkg , hook ) {
22
23
return pkg . name + '.js' ;
@@ -57,17 +58,28 @@ function forEachHook(pkgdir, callback) {
57
58
58
59
if ( ns . hooks ) {
59
60
ns . hooks . forEach ( function ( hook ) {
60
- callback ( hooksDir , pkg , hook )
61
+ callback ( hooksDir , pkg , hook ) ;
61
62
} ) ;
62
63
}
63
64
}
64
65
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
+
65
73
function postinstall ( pkgdir ) {
66
74
forEachHook ( pkgdir , function ( hooksDir , pkg , hook ) {
67
75
var hookDir = path . join ( hooksDir , hook . type ) ;
68
76
if ( ! fs . existsSync ( hookDir ) ) {
69
77
mkdirp . sync ( hookDir ) ;
70
78
}
79
+ if ( hookInstalled ( hookDir , pkg , hook ) ) {
80
+ console . log ( 'Hook already installed: ' + pkg . name ) ;
81
+ return ;
82
+ }
71
83
var hookFileName = generateHookName ( pkg , hook ) ;
72
84
var hookPath = path . join ( hookDir , hookFileName ) ;
73
85
0 commit comments