@@ -12,7 +12,7 @@ var exec = require('child_process').exec;
12
12
var Addon = require ( "./addon" ) ;
13
13
14
14
function setup ( options , imports , register , app ) {
15
- var logger = imports . logger . namespace ( "addons" , true ) ;
15
+ var logger = imports . logger . namespace ( "addons" , false ) ;
16
16
var server = imports . server ;
17
17
var events = imports . events ;
18
18
var hooks = imports . hooks ;
@@ -38,8 +38,15 @@ function setup(options, imports, register, app) {
38
38
} ;
39
39
40
40
// Load addons list from a directory return as a map name -> addon
41
- var loadAddonsInfos = function ( addonsRoot ) {
41
+ var loadAddonsInfos = function ( addonsRoot , options ) {
42
+ // Diretcory to explore
42
43
addonsRoot = addonsRoot || configAddonsPath ;
44
+
45
+ // Options
46
+ options = _ . defaults ( { } , options || { } , {
47
+ ignoreError : false
48
+ } ) ;
49
+
43
50
return Q . nfcall ( fs . readdir , addonsRoot ) . then ( function ( dirs ) {
44
51
return _ . reduce ( dirs , function ( previous , dir ) {
45
52
return previous . then ( function ( addons ) {
@@ -51,6 +58,25 @@ function setup(options, imports, register, app) {
51
58
addon . infos . default = isDefaultAddon ( addon ) ;
52
59
addons [ addon . infos . name ] = addon ;
53
60
return Q ( addons ) ;
61
+ } , function ( err ) {
62
+ logger . error ( "error" , err ) ;
63
+ if ( options . ignoreError ) {
64
+ // When ignoring error
65
+ // it will check that the addon is not a symlink
66
+ // and unlink invalid ones
67
+ logger . error ( "ignore invalid addon" , addonPath ) ;
68
+ return addon . isSymlink ( ) . then ( function ( symlink ) {
69
+ if ( symlink ) {
70
+ logger . error ( "unlink invalid addon:" , addon . root ) ;
71
+ return addon . unlink ( ) ;
72
+ }
73
+ } ) . then ( function ( ) {
74
+ return Q ( addons ) ;
75
+ } , function ( ) {
76
+ return Q ( addons ) ;
77
+ } ) ;
78
+ }
79
+ return Q . reject ( err ) ;
54
80
} ) ;
55
81
} ) ;
56
82
} , Q ( { } ) ) ;
@@ -171,7 +197,9 @@ function setup(options, imports, register, app) {
171
197
// Prepare defaults addons
172
198
return copyDefaultsAddons ( ) . then ( function ( ) {
173
199
// Load collection of addons
174
- return loadAddonsInfos ( ) ;
200
+ return loadAddonsInfos ( null , {
201
+ ignoreError : true
202
+ } ) ;
175
203
} ) . then ( runAddonsOperation ( function ( addon ) {
176
204
// Install node dependencies
177
205
return addon . installDependencies ( ) ;
0 commit comments