From 4f8514a4545bb8d628ed358b8612c4206da2bfdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Bajto=C5=A1?= Date: Mon, 12 Jan 2015 15:48:28 +0100 Subject: [PATCH] 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. --- lib/executor.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/executor.js b/lib/executor.js index 0e151d5..a4f51b9 100644 --- a/lib/executor.js +++ b/lib/executor.js @@ -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( - 'The `app` is powered by an incompatible loopback version %s. ' + - 'Supported versions: %s', - loopback.version || '(unknown)', + // 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); } }