1
0
Fork 0

Warn when versions incompatible.

This commit is contained in:
Alan Plum 2015-07-02 12:03:13 +02:00
parent 4826007168
commit c73b28eaba
1 changed files with 45 additions and 14 deletions

View File

@ -36,10 +36,11 @@
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
var R = require("ramda"); var R = require("ramda");
var db = require("internal").db; var internal = require("internal");
var fs = require("fs"); var fs = require("fs");
var joi = require("joi"); var joi = require("joi");
var util = require("util"); var util = require("util");
var semver = require("semver");
var utils = require("org/arangodb/foxx/manager-utils"); var utils = require("org/arangodb/foxx/manager-utils");
var store = require("org/arangodb/foxx/store"); var store = require("org/arangodb/foxx/store");
var console = require("console"); var console = require("console");
@ -50,9 +51,10 @@ var exportApp = require("org/arangodb/foxx/routing").exportApp;
var invalidateExportCache = require("org/arangodb/foxx/routing").invalidateExportCache; var invalidateExportCache = require("org/arangodb/foxx/routing").invalidateExportCache;
var arangodb = require("org/arangodb"); var arangodb = require("org/arangodb");
var ArangoError = arangodb.ArangoError; var ArangoError = arangodb.ArangoError;
var cluster = require("org/arangodb/cluster"); var db = arangodb.db;
var checkParameter = arangodb.checkParameter; var checkParameter = arangodb.checkParameter;
var errors = arangodb.errors; var errors = arangodb.errors;
var cluster = require("org/arangodb/cluster");
var download = require("internal").download; var download = require("internal").download;
var executeGlobalContextFunction = require("internal").executeGlobalContextFunction; var executeGlobalContextFunction = require("internal").executeGlobalContextFunction;
var actions = require("org/arangodb/actions"); var actions = require("org/arangodb/actions");
@ -306,22 +308,44 @@ var checkManifest = function(filename, manifest) {
if (result.error) { if (result.error) {
var message = result.error.message.replace(/^"value"/, util.format('"%s"', key)); var message = result.error.message.replace(/^"value"/, util.format('"%s"', key));
if (value === undefined) { if (value === undefined) {
message = util.format('Manifest "%s": attribute %s.', filename, message); message = util.format(
'Manifest "%s": attribute %s.',
filename,
message
);
} else { } else {
message = util.format('Manifest "%s": attribute %s (was "%s").', filename, message, manifest[key]); message = util.format(
'Manifest "%s": attribute %s (was "%s").',
filename,
message,
manifest[key]
);
} }
validationErrors.push(message); validationErrors.push(message);
console.error(message); console.error(message);
} }
}); });
if (manifest.engines && manifest.engines.arangodb && !semver.satisfies(internal.version, manifest.engines.arangodb)) {
console.warn(
'Manifest "%s" for app "%s": ArangoDB version %s probably not compatible with expected version %s.',
filename,
manifest.name,
internal.version,
manifest.engines.arangodb
);
}
// TODO Remove in 2.8 // TODO Remove in 2.8
if (manifest.setup) { if (manifest.setup) {
console.warn( console.warn(
"Manifest '%s' for app '%s' contains deprecated attribute 'setup', use 'scripts.setup' instead.", (
manifest.name, 'Manifest "%s" for app "%s" contains deprecated attribute "setup",'
filename + ' use "scripts.setup" instead.'
),
filename,
manifest.name
); );
manifest.scripts.setup = manifest.setup; manifest.scripts.setup = manifest.setup;
delete manifest.setup; delete manifest.setup;
@ -329,9 +353,12 @@ var checkManifest = function(filename, manifest) {
if (manifest.teardown) { if (manifest.teardown) {
console.warn( console.warn(
"Manifest '%s' for app '%s' contains deprecated attribute 'teardown', use 'scripts.teardown' instead.", (
manifest.name, 'Manifest "%s" for app "%s" contains deprecated attribute "teardown",'
filename + ' use "scripts.teardown" instead.'
),
filename,
manifest.name
); );
manifest.scripts.teardown = manifest.teardown; manifest.scripts.teardown = manifest.teardown;
delete manifest.teardown; delete manifest.teardown;
@ -339,17 +366,21 @@ var checkManifest = function(filename, manifest) {
if (manifest.assets) { if (manifest.assets) {
console.warn( console.warn(
"Manifest '%s' for app '%s' contains deprecated attribute 'assets', use 'files' and an external build tool instead.", (
manifest.name, 'Manifest "%s" for app "%s" contains deprecated attribute "assets",'
filename + ' use "files" and an external build tool instead.'
),
filename,
manifest.name
); );
} }
Object.keys(manifest).forEach(function (key) { Object.keys(manifest).forEach(function (key) {
if (!manifestSchema[key]) { if (!manifestSchema[key]) {
console.warn( console.warn(
'Manifest "%s": unknown attribute "%s"', 'Manifest "%s" for app "%s": unknown attribute "%s"',
filename, filename,
manifest.name,
key key
); );
} }