Explorar el Código

prefer exact matches in help function

d98762625 hace 6 años
padre
commit
8f5f3e56cb
Se han modificado 1 ficheros con 13 adiciones y 5 borrados
  1. 13 5
      src/node/api.mjs

+ 13 - 5
src/node/api.mjs

@@ -232,6 +232,8 @@ export function help(input) {
         return null;
     }
 
+    let exactMatchExists = false;
+
     // Look for matches in operation name and description, listing name
     // matches first.
     const matches = Object.keys(OperationConfig)
@@ -240,15 +242,23 @@ export function help(input) {
             const hydrated = OperationConfig[m];
             hydrated.name = m;
 
+            // flag up an exact name match. Only first exact match counts.
+            if (!exactMatchExists) {
+                exactMatchExists = sanitise(hydrated.name) === sanitise(searchTerm);
+            }
             // Return hydrated along with what type of match it was
             return {
                 hydrated,
+                nameExactMatch: sanitise(hydrated.name) === sanitise(searchTerm),
                 nameMatch: sanitise(hydrated.name).includes(sanitise(searchTerm)),
                 descMatch: sanitise(hydrated.description).includes(sanitise(searchTerm))
             };
         })
-        // Filter out non-matches
+        // Filter out non-matches. If exact match exists, filter out all others.
         .filter((result) => {
+            if (exactMatchExists) {
+                return !!result.nameExactMatch;
+            }
             return result.nameMatch || result.descMatch;
         })
         // sort results with name match first
@@ -260,9 +270,8 @@ export function help(input) {
         // extract just the hydrated config
         .map(result => result.hydrated);
 
-    // Concatenate matches but remove duplicates
     if (matches && matches.length) {
-        console.log(`${matches.length} results found.`);
+        console.log(`${matches.length} result${matches.length > 1 ? "s" : ""} found.`);
         return matches;
     }
 
@@ -273,10 +282,9 @@ export function help(input) {
 
 /**
  * bake [Wrapped] - Perform an array of operations on some input.
- * @param operations array of chef's operations (used in wrapping stage)
  * @returns {Function}
  */
-export function bake(operations){
+export function bake(){
 
     /**
      * bake