Add basic DSL error checks
This commit is contained in:
parent
eb5090e9e9
commit
9b04a4ed15
31
lib/robot.js
31
lib/robot.js
|
@ -46,6 +46,9 @@ var Robot = module.exports = function Robot(opts) {
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
this.initRobot(opts);
|
this.initRobot(opts);
|
||||||
|
|
||||||
|
this.checkForBadSyntax(opts);
|
||||||
|
|
||||||
this.initConnections(opts);
|
this.initConnections(opts);
|
||||||
this.initDevices(opts);
|
this.initDevices(opts);
|
||||||
|
|
||||||
|
@ -153,6 +156,34 @@ Robot.prototype.initRobot = function(opts) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Public: Checks options for bad Cylon syntax
|
||||||
|
//
|
||||||
|
// Returns nothing
|
||||||
|
Robot.prototype.checkForBadSyntax = function(opts) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
var RobotDSLError = new Error("Unable to start robot due to a syntax error");
|
||||||
|
RobotDSLError.name = "RobotDSLError";
|
||||||
|
|
||||||
|
function has(prop) { return opts[prop] != null; }
|
||||||
|
|
||||||
|
function checkForSingleObjectSyntax(type) {
|
||||||
|
var plural = type + "s";
|
||||||
|
|
||||||
|
if (has(type) && !has(plural)) {
|
||||||
|
[
|
||||||
|
"The single-object '" + type + "' syntax for robots is not valid.",
|
||||||
|
"Instead, use the multiple-value '" + plural + "' key syntax.",
|
||||||
|
"Details: http://cylonjs.com/documentation/guides/working-with-robots/"
|
||||||
|
].forEach(function(str) { self.log("fatal", str); });
|
||||||
|
|
||||||
|
throw RobotDSLError;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
["connection", "device"].forEach(checkForSingleObjectSyntax);
|
||||||
|
};
|
||||||
|
|
||||||
// Public: Initializes all connections for the robot
|
// Public: Initializes all connections for the robot
|
||||||
//
|
//
|
||||||
// opts - options array passed to constructor
|
// opts - options array passed to constructor
|
||||||
|
|
Loading…
Reference in New Issue