3
3
import Future = require( "fibers/future" ) ;
4
4
import npm = require( "npm" ) ;
5
5
import path = require( "path" ) ;
6
+ import semver = require( "semver" ) ;
6
7
import shell = require( "shelljs" ) ;
7
8
import helpers = require( "./common/helpers" ) ;
9
+ import constants = require( "./constants" ) ;
8
10
9
11
export class NodePackageManager implements INodePackageManager {
10
12
private static NPM_LOAD_FAILED = "Failed to retrieve data from npm. Please try again a little bit later." ;
11
13
private static NPM_REGISTRY_URL = "http://registry.npmjs.org/" ;
12
14
13
15
constructor ( private $logger : ILogger ,
14
16
private $errors : IErrors ,
15
- private $httpClient : Server . IHttpClient ) { }
17
+ private $httpClient : Server . IHttpClient ,
18
+ private $staticConfig : IStaticConfig ) { }
16
19
17
20
public get cache ( ) : string {
18
21
return npm . cache ;
@@ -43,7 +46,6 @@ export class NodePackageManager implements INodePackageManager {
43
46
}
44
47
45
48
this . installCore ( pathToSave , packageToInstall ) . wait ( ) ;
46
-
47
49
} catch ( error ) {
48
50
this . $logger . debug ( error ) ;
49
51
this . $errors . fail ( NodePackageManager . NPM_LOAD_FAILED ) ;
@@ -54,9 +56,18 @@ export class NodePackageManager implements INodePackageManager {
54
56
} ) . future < string > ( ) ( ) ;
55
57
}
56
58
57
- private installCore ( where : string , what : string ) : IFuture < any > {
58
- var future = new Future < any > ( ) ;
59
- npm . commands [ "install" ] ( where , what , ( err , data ) => {
59
+ private installCore ( packageName : string , pathToSave : string ) : IFuture < void > {
60
+ var currentVersion = this . $staticConfig . version ;
61
+ if ( ! semver . valid ( currentVersion ) ) {
62
+ this . $errors . fail ( "Invalid version." ) ;
63
+ }
64
+
65
+ var incrementedVersion = semver . inc ( currentVersion , constants . ReleaseType . MINOR ) ;
66
+ packageName = packageName + "@" + "<" + incrementedVersion ;
67
+ this . $logger . trace ( "Installing" , packageName ) ;
68
+
69
+ var future = new Future < void > ( ) ;
70
+ npm . commands [ "install" ] ( pathToSave , packageName , ( err , data ) => {
60
71
if ( err ) {
61
72
future . throw ( err ) ;
62
73
} else {
0 commit comments