I was thinking out loud in mozilla-services/antenna#1100 (comment) about why I wrote socorro-cmd, but don't generally like it and don't really want to carry it across to all the services we maintain.
That got me thinking that maybe instead of having a script runner we have a command that lists the available commands.
All of our commands are of one of two groups:
-
installed with a Python package -- we can list these automatically because they're listed in the console_scripts entrypoint package metadata
https://docs.python.org/3/library/importlib.metadata.html#importlib.metadata.entry_points
>>> import importlib.metadata
>>> [ep.name for ep in importlib.metadata.entry_points()["console_scripts"] if ep.value.startswith(("obs_common", "crashstats_tools", "honcho"))]
["honcho", "gcs_cli", "pubsub_cli", ...]
-
located in the /app/bin directory
Given that, we can write a command that lists existing commands without having to manually maintain the list of commands.
Example usage:
> make shell
app> listcommands
Available commands:
honcho gcs_cli pubsub_cli ...
See service developer documentation for more details.
Maybe it lists it by source?:
Example usage:
> make shell
app> listcommands
obs-common commands:
gcs_cli pubsub_cli waitfor ...
crashstats-tools commands:
fetch_data supersearch reprocess ...
/app/bin commands:
db es ...
See developer documentation for more details.
It could even be something we add to obs-common and note in our docs.
If we built this script in obs-common, then we maintain it in one place, it gets installed everywhere, and wouldn't have to do much to maintain it.
I was thinking out loud in mozilla-services/antenna#1100 (comment) about why I wrote
socorro-cmd, but don't generally like it and don't really want to carry it across to all the services we maintain.That got me thinking that maybe instead of having a script runner we have a command that lists the available commands.
All of our commands are of one of two groups:
installed with a Python package -- we can list these automatically because they're listed in the console_scripts entrypoint package metadata
https://docs.python.org/3/library/importlib.metadata.html#importlib.metadata.entry_points
located in the
/app/bindirectoryGiven that, we can write a command that lists existing commands without having to manually maintain the list of commands.
Maybe it lists it by source?:
It could even be something we add to obs-common and note in our docs.
If we built this script in obs-common, then we maintain it in one place, it gets installed everywhere, and wouldn't have to do much to maintain it.