Support extensibility using executables named `beet-*`, like git
- Dominant language
- Python
- Stars
- 15.7k
- Forks
- 2.1k
- Avg merge
- 4d 21h
- Merged PRs (30d)
- 31
Description
### Proposed solution
Support the same extensibility model that git implements, i.e.:
- Allow new subcommands based on executables named `beet-*` in `$PATH`
- Do not allow overriding builtin subcommands
- Do not allow overriding subcommands provided by plugins
### Objective
Make it easier to invent new functionality for beets without the need to resort to Python plugins and their maintenance overhead.
Some examples:
- [Open the beet database](https://github.com/agross/dotfiles/blob/master/beets/bin/beet-edit-db)
- [Run ffprobe on query results](https://github.com/agross/dotfiles/blob/master/beets/bin/beet-ffprobe)
- [More stuff](https://github.com/agross/dotfiles/tree/master/beets/bin)
[More info](https://stackoverflow.com/a/43432410) concerning this feature in git.
#### Goals
See above (?)
#### Non-goals
Replacing plugins.
#### Anti-goals
Such scripts could inject unwanted functionality into beet if implemented incorrectly, e.g. `beet import` running `rm -rf /` through a `beet-import` script in `$PATH`.
Perhaps also provide an option to disable external commands, [like git does it](https://git-scm.com/docs/git-help#Documentation/git-help.txt---no-external-commands).
Contributor guide
Assessment
This issue has not been assessed yet.