File tree Expand file tree Collapse file tree 1 file changed +9
-3
lines changed
Expand file tree Collapse file tree 1 file changed +9
-3
lines changed Original file line number Diff line number Diff line change @@ -78,21 +78,27 @@ exports.setup = function() {
7878 // find out which modules are missing
7979 var pkg = require ( path . join ( __dirname , ".." , "package.json" ) ) ;
8080 var install = [ ] ;
81+ var semver ;
8182 pkg . cliDependencies . forEach ( function ( name ) {
83+ var version = pkg . dependencies [ name ] || pkg . devDependencies [ name ] ;
8284 try {
83- require . resolve ( name + "/package.json" ) ; // jsdoc has no main file
85+ var mPath = require . resolve ( name + "/package.json" ) ; // jsdoc has no main file
86+ var mPkg = JSON . parse ( fs . readFileSync ( mPath ) ) ;
87+ if ( semver && ! semver . satisfies ( mPkg . version , version ) )
88+ throw Error ( mPkg . version + " is outdated" ) ;
8489 } catch ( e ) {
85- var version = pkg . dependencies [ name ] || pkg . devDependencies [ name ] ;
90+ process . stderr . write ( "installing " + name + "@" + version + " (" + e . message + ")\n" ) ;
8691 install . push ( version ? name + "@" + version : name ) ;
8792 }
93+ if ( name === "semver" )
94+ semver = require ( "semver" ) ;
8895 } ) ;
8996 if ( ! install . length ) {
9097 try { fs . rmdirSync ( path . join ( __dirname , "node_modules" ) ) ; } catch ( e ) { }
9198 return ;
9299 }
93100
94101 // if any are missing, install them. this relies on an empty package.json in cli/.
95- process . stderr . write ( "installing CLI dependencies: " + install . join ( ", " ) + "\n" ) ;
96102 child_process . execSync ( "npm --silent install " + install . join ( " " ) , {
97103 cwd : __dirname ,
98104 stdio : "ignore"
You can’t perform that action at this time.
0 commit comments