|
1 | 1 | import * as lodash from 'lodash';
|
2 | 2 |
|
3 |
| -import { CommandInstanceInfo, CommandLineInputs, CommandLineOptions, CommandMapGetter, CommandMetadata, CommandMetadataInput, CommandMetadataOption, CommandPathItem, HydratedCommandMetadata, HydratedNamespaceMetadata, ICommand, ICommandMap, INamespace, INamespaceMap, NamespaceLocateResult, NamespaceMapGetter, NamespaceMetadata, ValidationError } from '../definitions'; |
| 3 | +import { CommandInstanceInfo, CommandLineInputs, CommandLineOptions, CommandMapGetter, CommandMetadata, CommandMetadataInput, CommandMetadataOption, CommandPathItem, HydratedCommandMetadata, HydratedNamespaceMetadata, ICommand, ICommandMap, INamespace, INamespaceMap, NamespaceLocateOptions, NamespaceLocateResult, NamespaceMapGetter, NamespaceMetadata, ValidationError } from '../definitions'; |
4 | 4 | import { InputValidationError } from '../errors';
|
5 | 5 | import { AliasedMap } from '../utils/object';
|
6 | 6 | import { strcmp } from '../utils/string';
|
@@ -96,17 +96,17 @@ export abstract class BaseNamespace<C extends ICommand<C, N, M, I, O>, N extends
|
96 | 96 | *
|
97 | 97 | * @param argv The set of command-line arguments to use to locate.
|
98 | 98 | */
|
99 |
| - async locate(argv: ReadonlyArray<string>): Promise<NamespaceLocateResult<C, N, M, I, O>> { |
| 99 | + async locate(argv: ReadonlyArray<string>, { useAliases = true }: NamespaceLocateOptions = {}): Promise<NamespaceLocateResult<C, N, M, I, O>> { |
100 | 100 | const _locate = async (inputs: ReadonlyArray<string>, parent: N, path: CommandPathItem<C, N, M, I, O>[]): Promise<NamespaceLocateResult<C, N, M, I, O>> => {
|
101 | 101 | const [ key ] = inputs;
|
102 | 102 | const children = await parent.getNamespaces();
|
103 |
| - const nsgetter = children.resolveAliases(key); |
| 103 | + const nsgetter = useAliases ? children.resolveAlias(key) : children.get(key); |
104 | 104 |
|
105 |
| - if (!nsgetter) { |
| 105 | + if (!nsgetter || typeof nsgetter === 'string' || typeof nsgetter === 'symbol') { |
106 | 106 | const commands = await parent.getCommands();
|
107 |
| - const cmdgetter = commands.resolveAliases(key); |
| 107 | + const cmdgetter = useAliases ? commands.resolveAlias(key) : commands.get(key); |
108 | 108 |
|
109 |
| - if (cmdgetter) { |
| 109 | + if (cmdgetter && typeof cmdgetter !== 'string' && typeof cmdgetter !== 'symbol') { |
110 | 110 | const cmd = await cmdgetter();
|
111 | 111 | return { args: inputs.slice(1), obj: cmd, path: [...path, [key, cmd]] };
|
112 | 112 | }
|
|
0 commit comments