Fix "incompatible loopback version" check & msg

Use `util.format` to build the error message, `Error` constructors
does not support placeholders like `%s`.

Detect pre-release versions and handle them in the same way as regular
releases.
This commit is contained in:
Miroslav Bajtoš 2015-01-12 15:48:28 +01:00
parent 30ff50c581
commit 4f8514a454
1 changed files with 11 additions and 5 deletions

View File

@ -4,6 +4,7 @@ var semver = require('semver');
var debug = require('debug')('loopback:boot:executor');
var async = require('async');
var path = require('path');
var format = require('util').format;
/**
* Execute bootstrap instructions gathered by `boot.compile`.
@ -73,12 +74,17 @@ function assertLoopBackVersion(app) {
var RANGE = '1.x || 2.x';
var loopback = app.loopback;
if (!semver.satisfies(loopback.version || '1.0.0', RANGE)) {
throw new Error(
// remove any pre-release tag from the version string,
// because semver has special treatment of pre-release versions,
// while loopback-boot treats pre-releases the same way as regular versions
var version = (loopback.version || '1.0.0').replace(/-.*$/, '');
if (!semver.satisfies(version, RANGE)) {
var msg = format(
'The `app` is powered by an incompatible loopback version %s. ' +
'Supported versions: %s',
loopback.version || '(unknown)',
RANGE);
throw new Error(msg);
}
}