From e0dc281adda37a38a761b375816fb042c041f274 Mon Sep 17 00:00:00 2001 From: ThePaSch Date: Mon, 29 May 2017 13:40:54 +0200 Subject: [PATCH 1/5] Update App.js updated interpreter to check for aliases --- lib/App.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lib/App.js b/lib/App.js index cff84d2..fd031e2 100644 --- a/lib/App.js +++ b/lib/App.js @@ -227,6 +227,22 @@ class App { cmd = command; break; } + + // check if a command alias was provided instead + else { + let abort = false; + for (let alias in command.aliases) { + let validAliasName = command.caseSensitive ? command.aliases[alias] : command.aliases[alias].toLowerCase(); + + if(validUserInput === validAliasName) { + cmd = command; + abort = true; + break; + } + + if(abort) break; + } + } } if (!cmd) { From 392d26c13bf1e4cf8d879f790a1e1a1ef59efc8a Mon Sep 17 00:00:00 2001 From: ThePaSch Date: Mon, 29 May 2017 13:43:05 +0200 Subject: [PATCH 2/5] Update Command.js added aliases member to command class; added aliases to command help --- lib/Command.js | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/lib/Command.js b/lib/Command.js index 50fa745..ed49cb1 100644 --- a/lib/Command.js +++ b/lib/Command.js @@ -100,8 +100,11 @@ class Command { ( options.async && typeof options.async !== "boolean" - ) // async is not required - + ) || // async is not required + ( + options.aliases && + !Array.isArray(options.aliases) // aliases is not required + ) ) { throw new Error("Wrong parameters passed when creating command " + options.name + @@ -146,6 +149,17 @@ class Command { } } + + this.aliases = {}; + options.aliases = options.aliases || []; + for (var i = 0; i < options.aliases.length; i++) { + + if (typeof options.aliases[i] === "string") { + this.aliases[i] = options.aliases[i]; + } else { + throw new Error("One of the items in the aliases array is not a string."); + } + } } /** @@ -158,7 +172,18 @@ class Command { _getHelp(app) { const LINE_WIDTH = 100; - let r = str.help_usage + " " + app.prefix + " " + this.name; + let r = str.help_usage + " " + app.prefix + " " + this.name + "\n"; + + // Add aliases + if(this.aliases.length > 0) { + r += "Aliases for this command: "; + for(let i in this.aliases) { + r += this.aliases[i]; + if((i + 1) < this.aliases.length) r += ","; + } + r += "\n"; + } + let args_table; // Add every argument to the usage (Only if there are arguments) From 5ddb608def3468ec167218d9f07239309ca5fcf9 Mon Sep 17 00:00:00 2001 From: ThePaSch Date: Mon, 29 May 2017 15:55:17 +0200 Subject: [PATCH 3/5] Command.js ESLint esLint fixes for Command.js --- lib/Command.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/Command.js b/lib/Command.js index ed49cb1..a0f2bdd 100644 --- a/lib/Command.js +++ b/lib/Command.js @@ -152,7 +152,7 @@ class Command { this.aliases = {}; options.aliases = options.aliases || []; - for (var i = 0; i < options.aliases.length; i++) { + for (let i = 0; i < options.aliases.length; i++) { if (typeof options.aliases[i] === "string") { this.aliases[i] = options.aliases[i]; @@ -175,12 +175,14 @@ class Command { let r = str.help_usage + " " + app.prefix + " " + this.name + "\n"; // Add aliases - if(this.aliases.length > 0) { + if (this.aliases.length > 0) { r += "Aliases for this command: "; - for(let i in this.aliases) { - r += this.aliases[i]; - if((i + 1) < this.aliases.length) r += ","; + for (let i in this.aliases) { + r += this.aliases[i]; + if ((i + 1) < this.aliases.length) { + r += ","; } + } r += "\n"; } From 865a6e5c82760c4005c077d39b2b2d827ea8f749 Mon Sep 17 00:00:00 2001 From: ThePaSch Date: Mon, 29 May 2017 15:55:41 +0200 Subject: [PATCH 4/5] App.js ESLint esLint fixes for App.js --- lib/App.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/App.js b/lib/App.js index fd031e2..9407032 100644 --- a/lib/App.js +++ b/lib/App.js @@ -226,21 +226,22 @@ class App { if (validCommandName === validUserInput) { cmd = command; break; - } - - // check if a command alias was provided instead - else { - let abort = false; + } else { + // Check whether the command's alias has been entered instead + let abort = false; for (let alias in command.aliases) { - let validAliasName = command.caseSensitive ? command.aliases[alias] : command.aliases[alias].toLowerCase(); + let aliasName = command.aliases[alias]; + let validAliasName = command.caseSensitive ? aliasName : aliasName.toLowerCase(); - if(validUserInput === validAliasName) { + if (validUserInput === validAliasName) { cmd = command; abort = true; break; } - if(abort) break; + if (abort) { + break; + } } } } From c5364ade04966239bb1236d0e63850278bd87147 Mon Sep 17 00:00:00 2001 From: ThePaSch Date: Mon, 29 May 2017 22:04:38 +0200 Subject: [PATCH 5/5] App.js ESLint MaxLength adjusted length of 234 to meet ESLint max-len criteria --- lib/App.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/App.js b/lib/App.js index 9407032..0dbac50 100644 --- a/lib/App.js +++ b/lib/App.js @@ -231,9 +231,9 @@ class App { let abort = false; for (let alias in command.aliases) { let aliasName = command.aliases[alias]; - let validAliasName = command.caseSensitive ? aliasName : aliasName.toLowerCase(); + let validAName = command.caseSensitive ? aliasName : aliasName.toLowerCase(); - if (validUserInput === validAliasName) { + if (validUserInput === validAName) { cmd = command; abort = true; break;