Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions src/cli/catalog.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ class Catalog extends BaseCLIHandler {
group: [constants.CMD_ADD, constants.CMD_UPDATE]
},
{
name: 'item-id', alias: 'i', type: Number, description: 'Catalog item ID',
name: 'item-id', alias: 'i', type: Number, numberType: 'integer', description: 'Catalog item ID',
group: [constants.CMD_UPDATE, constants.CMD_REMOVE, constants.CMD_INFO]
},
{
Expand Down Expand Up @@ -91,12 +91,12 @@ class Catalog extends BaseCLIHandler {
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'disk-required', alias: 's', type: Number,
name: 'disk-required', alias: 's', type: Number, numberType: 'integer',
description: 'Amount of disk required to run the microservice (MB)',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'ram-required', alias: 'r', type: Number,
name: 'ram-required', alias: 'r', type: Number, numberType: 'integer',
description: 'Amount of RAM required to run the microservice (MB)',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
Expand All @@ -113,7 +113,8 @@ class Catalog extends BaseCLIHandler {
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'registry-id', alias: 'g', type: Number, description: 'Catalog item docker registry ID',
name: 'registry-id', alias: 'g', type: Number, numberType: 'integer',
description: 'Catalog item docker registry ID',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
Expand All @@ -137,7 +138,7 @@ class Catalog extends BaseCLIHandler {
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'user-id', alias: 'u', type: Number, description: 'User\'s id',
name: 'user-id', alias: 'u', type: Number, numberType: 'integer', description: 'User\'s id',
group: [constants.CMD_ADD]
},
];
Expand Down
4 changes: 2 additions & 2 deletions src/cli/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class Config extends BaseCLIHandler {
group: constants.CMD
},
{
name: 'port', alias: 'p', type: Number, description: 'Port',
name: 'port', alias: 'p', type: Number, numberType: 'integer', description: 'Port',
group: constants.CMD_ADD
},
{
Expand Down Expand Up @@ -74,7 +74,7 @@ class Config extends BaseCLIHandler {
group: constants.CMD_ADD
},
{
name: 'log-size', alias: 'z', type: Number,
name: 'log-size', alias: 'z', type: Number, numberType: 'integer',
description: 'Log files size (MB)', group: constants.CMD_ADD
},
{
Expand Down
2 changes: 1 addition & 1 deletion src/cli/diagnostics.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class Diagnostics extends BaseCLIHandler {
group: [constants.CMD_STRACE_FTP_POST]
},
{
name: 'ftpPort', alias: 'p', type: Number, description: 'FTP port',
name: 'ftpPort', alias: 'p', type: Number, numberType: 'integer', description: 'FTP port',
group: [constants.CMD_STRACE_FTP_POST]
},
{
Expand Down
4 changes: 2 additions & 2 deletions src/cli/flow.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class Flow extends BaseCLIHandler {
group: [constants.CMD_ADD, constants.CMD_UPDATE]
},
{
name: 'flow-id', alias: 'i', type: Number,
name: 'flow-id', alias: 'i', type: Number, numberType: 'integer',
description: 'Application flow ID',
group: [constants.CMD_UPDATE, constants.CMD_REMOVE, constants.CMD_INFO]
},
Expand All @@ -66,7 +66,7 @@ class Flow extends BaseCLIHandler {
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'user-id', alias: 'u', type: Number,
name: 'user-id', alias: 'u', type: Number, numberType: 'integer',
description: 'User\'s id',
group: [constants.CMD_ADD]
}
Expand Down
24 changes: 12 additions & 12 deletions src/cli/iofog.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,12 @@ class IOFog extends BaseCLIHandler {
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'latitude', alias: 't', type: Number,
name: 'latitude', alias: 't', type: Number, numberType: 'float',
description: 'ioFog node latitude',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'longitude', alias: 'g', type: Number,
name: 'longitude', alias: 'g', type: Number, numberType: 'float',
description: 'ioFog node longitude',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
Expand All @@ -94,7 +94,7 @@ class IOFog extends BaseCLIHandler {
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'disk-limit', alias: 'M', type: Number,
name: 'disk-limit', alias: 'M', type: Number, numberType: 'float',
description: 'ioFog node disk usage limit (MB)',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
Expand All @@ -104,17 +104,17 @@ class IOFog extends BaseCLIHandler {
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'memory-limit', alias: 'm', type: Number,
name: 'memory-limit', alias: 'm', type: Number, numberType: 'float',
description: 'ioFog node memory usage limit (MB)',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'cpu-limit', alias: 'c', type: Number,
name: 'cpu-limit', alias: 'c', type: Number, numberType: 'float',
description: 'ioFog node CPU usage limit (%)',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'log-limit', alias: 'G', type: Number,
name: 'log-limit', alias: 'G', type: Number, numberType: 'float',
description: 'ioFog node log size limit (MB)',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
Expand All @@ -124,22 +124,22 @@ class IOFog extends BaseCLIHandler {
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'log-file-count', alias: 'C', type: Number,
name: 'log-file-count', alias: 'C', type: Number, numberType: 'integer',
description: 'ioFog node log files count',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'status-frequency', alias: 's', type: Number,
name: 'status-frequency', alias: 's', type: Number, numberType: 'integer',
description: 'ioFog node status check frequency (seconds)',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'change-frequency', alias: 'F', type: Number,
name: 'change-frequency', alias: 'F', type: Number, numberType: 'integer',
description: 'ioFog node configuration change check frequency (seconds)',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'device-frequency', alias: 'Q', type: Number,
name: 'device-frequency', alias: 'Q', type: Number, numberType: 'integer',
description: 'ioFog node device scan frequency (seconds)',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
Expand Down Expand Up @@ -179,7 +179,7 @@ class IOFog extends BaseCLIHandler {
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'fog-type', alias: 'y', type: Number,
name: 'fog-type', alias: 'y', type: Number, numberType: 'integer',
description: 'ioFog node architecture type',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
Expand All @@ -189,7 +189,7 @@ class IOFog extends BaseCLIHandler {
group: [constants.CMD_VERSION]
},
{
name: 'user-id', alias: 'u', type: Number,
name: 'user-id', alias: 'u', type: Number, numberType: 'integer',
description: 'User\'s id',
group: [constants.CMD_ADD]
}
Expand Down
12 changes: 6 additions & 6 deletions src/cli/microservice.js
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,11 @@ class Microservice extends BaseCLIHandler {
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'catalog-id', alias: 'c', type: Number, description: 'Catalog item ID',
name: 'catalog-id', alias: 'c', type: Number, numberType: 'integer', description: 'Catalog item ID',
group: [constants.CMD_ADD]
},
{
name: 'flow-id', alias: 'F', type: Number, description: 'Application flow ID',
name: 'flow-id', alias: 'F', type: Number, numberType: 'integer', description: 'Application flow ID',
group: [constants.CMD_ADD]
},
{
Expand All @@ -112,7 +112,7 @@ class Microservice extends BaseCLIHandler {
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
name: 'log-size', alias: 'l', type: Number, description: 'Log file size limit (MB)',
name: 'log-size', alias: 'l', type: Number, numberType: 'integer', description: 'Log file size limit (MB)',
group: [constants.CMD_UPDATE, constants.CMD_ADD]
},
{
Expand Down Expand Up @@ -142,7 +142,7 @@ class Microservice extends BaseCLIHandler {
group: [constants.CMD_ROUTE_CREATE, constants.CMD_ROUTE_REMOVE]
},
{
name: 'internal-port', alias: 'b', type: Number, description: 'Internal port',
name: 'internal-port', alias: 'b', type: Number, numberType: 'integer', description: 'Internal port',
group: [constants.CMD_PORT_MAPPING_REMOVE]
},
{
Expand All @@ -154,11 +154,11 @@ class Microservice extends BaseCLIHandler {
group: [constants.CMD_REMOVE]
},
{
name: 'user-id', alias: 'u', type: Number, description: 'User\'s id',
name: 'user-id', alias: 'u', type: Number, numberType: 'integer', description: 'User\'s id',
group: [constants.CMD_ADD]
},
{
name: 'mapping-id', alias: 'a', type: Number, description: 'Volume mapping id',
name: 'mapping-id', alias: 'a', type: Number, numberType: 'integer', description: 'Volume mapping id',
group: [constants.CMD_VOLUME_MAPPING_REMOVE]
}
];
Expand Down
4 changes: 2 additions & 2 deletions src/cli/registry.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,12 @@ class Registry extends BaseCLIHandler {
group: [constants.CMD_ADD, constants.CMD_UPDATE]
},
{
name: 'user-id', alias: 'u', type: Number,
name: 'user-id', alias: 'u', type: Number, numberType: 'integer',
description: 'User\'s id',
group: [constants.CMD_ADD]
},
{
name: 'item-id', alias: 'i', type: Number,
name: 'item-id', alias: 'i', type: Number, numberType: 'integer',
description: 'Item\'s id',
group: [constants.CMD_REMOVE, constants.CMD_UPDATE]
}
Expand Down
2 changes: 1 addition & 1 deletion src/cli/tunnel.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class Tunnel extends BaseCLIHandler {
group: [constants.CMD_UPDATE]
},
{
name: 'port', alias: 'o', type: Number,
name: 'port', alias: 'o', type: Number, numberType: 'integer',
description: 'Tunnel port',
group: [constants.CMD_UPDATE]
},
Expand Down
39 changes: 31 additions & 8 deletions src/helpers/app-helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -163,10 +163,10 @@ function stringifyCliJsonSchema(json) {
function handleCLIError(error) {
switch (error.name) {
case "UNKNOWN_OPTION":
console.log("Unknown parameter " + error.optionName);
console.log("Invalid argument '" + error.optionName.split('-').join('') + "'");
break;
case "UNKNOWN_VALUE":
console.log("Unknown value " + error.value);
console.log("Invalid value " + error.value);
break;
case "InvalidArgumentError":
console.log(error.message);
Expand Down Expand Up @@ -197,39 +197,62 @@ function validateParameters(command, commandDefinitions, args) {
const possibleArgsList = _getPossibleArgsList(command, commandDefinitions);

let currentArgType;
let currwentArgName;

let currentArgName;
let numberType;
for (const arg of args) {
// arg is [argument, alias, value]

if (arg.startsWith("--")) { // argument
// '--ssl-cert' format -> 'ssl-cert' format
const argument = arg.substr(2);
_validateArg(argument, possibleArgsList);
currwentArgName = argument;
currentArgName = argument;
currentArgType = _getValType(argument, commandDefinitions);
if (currentArgType === 'number') {
numberType = commandDefinitions.filter(command => command.name === currentArgName)[0].numberType
}
} else if (arg.startsWith("-")) { // alias
// '-q' format -> 'q' format
const alias = arg.substr(1);
_validateArg(alias, possibleAliasesList);
currwentArgName = alias;
currentArgName = alias;
currentArgType = _getValType(alias, commandDefinitions);
if (currentArgType === 'number') {
numberType = commandDefinitions.filter(command => command.alias === currentArgName)[0].numberType
}
} else {
// value
let valType;
const nArg = new Number(arg);
if (isNaN(nArg)) {
valType = 'string';
} else if (_isInt(arg)){
valType = 'integer';
} else if (_isFloat(arg)){
valType = 'float';
} else {
valType = 'number';
}
if (valType !== currentArgType && currentArgType !== 'string') {
throw new Errors.InvalidArgumentTypeError(formatMessage(ErrorMessages.INVALID_CLI_ARGUMENT_TYPE, currwentArgName, currentArgType))
if (valType !== currentArgType && currentArgType !== 'string' && valType !== numberType) {
if (valType !== 'integer' && numberType !== 'float') {
if (valType !== 'number' && numberType) {
currentArgType = numberType;
}
throw new Errors.InvalidArgumentTypeError(formatMessage(ErrorMessages.INVALID_CLI_ARGUMENT_TYPE, currentArgName, currentArgType))
}
}
}
}
}

function _isInt(n){
return Number(n) % 1 === 0;
}

function _isFloat(n){
return Number(n) % 1 !== 0;
}

function _validateArg(arg, aliasesList) {
const valid = aliasesList.includes(arg);
if (!valid) {
Expand Down
2 changes: 1 addition & 1 deletion src/helpers/error-messages.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*/

module.exports = {
INVALID_CLI_ARGUMENT_TYPE: 'Type of argument "{}" should be a {}',
INVALID_CLI_ARGUMENT_TYPE: 'Field "{}" is not of type(s) {}',
DUPLICATE_NAME: "Duplicate name '{}'",
ALREADY_EXISTS: 'Model already exists',
INVALID_CATALOG_ITEM_ID: "Invalid catalog item id '{}'",
Expand Down