feat(command): derive missing command string from module filename #527
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Mentioned in #494, this PR makes a
command
string optional for module-based commands, using the base filename of therequire()
d module for the command when thecommand
string is not specified/exported.Not only does this get us one step closer to implementing #492, but it also paves the way for supporting an "auto" mode for
commandDir()
, where conventions can be used to determine subcommand hierarchies and command names can be defined by filenames of submodules.In this implementation, a
command
string is derived by filename via the following:.command()
: filename is looked up inrequire.cache
via the newwhich-module
dependency.commandDir()
: filename is already available via therequire-directory
APIThis logic only applies when the command module does not export a
command
string. For non-module command objects (ones that are notrequire()
d), a descriptive error is thrown if acommand
string is not given.