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