Your one-stop command line interface for all of the essential EFR goodies
Think of efr
as a toolbelt for Every Flavor's various software tools: it is a central place to find all of the utilities we've built up to speed up our workflow and reduce our mistakes.
The project has three main objectives:
- Centralize Tools: Offer a single CLI entry point for various teams, whether you're working on software dev, video editing, pcb design, or anything else.
- Extensible Architecture: Support a robust plugin system, allowing each team to add new commands without touching the core codebase.
- Ease of Use: Offer straightforward and self-explanatory commands, with detailed help messages for each subcommand. You shouldn't need to read any docs or talk to Swapnil to get started.
Below is a quick, one-line terminal command to clone this repository and install efr:
MacOS/Linux:
curl -s https://raw.githubusercontent.com/Every-Flavor-Robotics/efr/main/install.sh | bash
Windows:
powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/Every-Flavor-Robotics/efr/main/install.ps1 | iex"
The install script does the following:
- Clone the repository from GitHub.
- Move into the
efr
folder. - Upgrade pip to the latest version (best practice).
- Install
efr
in editable mode, pulling in any required dependencies. - If anything fails, it prints an error message and removes the cloned folder to leave a clean environment.
If you're developing or contributing to efr, you can install it in editable mode. This way, you can make changes to the code and see them reflected immediately.
The efr tool uses uv
to manage it's dependencies and virtual environemnts. If you don't have uv
installed, you can follow the instructions here.
git clone https://github.com/Every-Flavor-Robotics/efr.git
cd efr
uv venv ~/.efr/venv
source ~/.efr/venv/bin/activate # Use Activate.ps1 on Windows
uv pip install --no-build-isolation --no-cache-dir -e .
Once installed, you can run:
efr
You’ll see:
- Tool Information: Version, a brief description, and usage instructions.
- Installed Plugins: A list of plugin commands that are immediately available.
To see detailed help on any subcommand, simply run:
efr <subcommand> --help
One of efr’s main goals is modular extensibility. We’ve documented the process in the plugin_docs.md. Highlights:
- Create a new Python package with a Click command in a file (e.g.,
cli.py
). - Register it under the
efr.plugins
entry point in yoursetup.py
(orpyproject.toml
). - Install your plugin package, and it appears automatically when you run
efr
.
For a quick start, check out our official Creating a New efr Plugin guide.