Support external commands
Like cargo and git, ion offers a variety of built-in commands that are baked into the same executable. However, cargo and git allow users to invoke "external" commands; programs that live on the user's $PATH and which are named in the format cargo-<command> or git-<command> respectively. ion should support this functionality as well, allowing developers to add their own commands without needing to merge them into this repo.
Resources:
clapsupport for external commandscargosearching thePATHcargorunning a possibly external command- The
whichcrate, which will search thePATHfor you.
The factoring introduced in #54 for subcommands in to/from could be expanded to allow discovery of an external command or subcommand in runner_for_FOO_command- I like it.
It would be even better if the interface included the known command context so far, e.g. here it would be ["ion", "from"] so that e.g. external command discovery could look for ion-from-cbor and know that ion from cbor should invoke it.
Perhaps helpful context when we someday tackle this issue.