Skip to content

Commit d534ce0

Browse files
Fatme HavaluovaFatme
Fatme Havaluova
authored andcommitted
Semantic versioning
1 parent 449f72a commit d534ce0

File tree

4 files changed

+39
-6
lines changed

4 files changed

+39
-6
lines changed

lib/constants.ts

+11
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,14 @@ export var DEFAULT_PROJECT_NAME = "HelloNativescript";
66
export var APP_RESOURCES_FOLDER_NAME = "App_Resources";
77
export var PROJECT_FRAMEWORK_FOLDER_NAME = "framework";
88

9+
export class ReleaseType {
10+
static MAJOR = "major";
11+
static PREMAJOR = "premajor";
12+
static MINOR = "minor";
13+
static PREMINOR = "preminor";
14+
static PATCH = "patch";
15+
static PREPATCH = "prepatch";
16+
static PRERELEASE = "prerelease";
17+
}
18+
19+

lib/declarations.ts

+1
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@ interface INodePackageManager {
55
}
66

77
interface IStaticConfig extends Config.IStaticConfig { }
8+

lib/definitions/semver.d.ts

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
1+
12
declare module "semver" {
23
function gt(version1: string, version2: string): boolean;
34
function lt(version1: string, version2: string): boolean;
4-
}
5+
function valid(version: string): boolean;
6+
function inc(version: string, release: string): string;
7+
function inc(version: string, release: "major"): string;
8+
function inc(version: string, release: 'premajor'): string;
9+
function inc(version: string, release: 'minor'): string;
10+
function inc(version: string, release: 'preminor'): string;
11+
function inc(version: string, release: 'patch'): string;
12+
function inc(version: string, release: 'prepatch'): string;
13+
function inc(version: string, release: 'prerelease'): string;
14+
}

lib/node-package-manager.ts

+16-5
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,19 @@
33
import Future = require("fibers/future");
44
import npm = require("npm");
55
import path = require("path");
6+
import semver = require("semver");
67
import shell = require("shelljs");
78
import helpers = require("./common/helpers");
9+
import constants = require("./constants");
810

911
export class NodePackageManager implements INodePackageManager {
1012
private static NPM_LOAD_FAILED = "Failed to retrieve data from npm. Please try again a little bit later.";
1113
private static NPM_REGISTRY_URL = "http://registry.npmjs.org/";
1214

1315
constructor(private $logger: ILogger,
1416
private $errors: IErrors,
15-
private $httpClient: Server.IHttpClient) { }
17+
private $httpClient: Server.IHttpClient,
18+
private $staticConfig: IStaticConfig) { }
1619

1720
public get cache(): string {
1821
return npm.cache;
@@ -43,7 +46,6 @@ export class NodePackageManager implements INodePackageManager {
4346
}
4447

4548
this.installCore(pathToSave, packageToInstall).wait();
46-
4749
} catch(error) {
4850
this.$logger.debug(error);
4951
this.$errors.fail(NodePackageManager.NPM_LOAD_FAILED);
@@ -54,9 +56,18 @@ export class NodePackageManager implements INodePackageManager {
5456
}).future<string>()();
5557
}
5658

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) => {
6071
if(err) {
6172
future.throw(err);
6273
} else {

0 commit comments

Comments
 (0)