Onyx Developer Script
ods is onyx.app's devtools utility script.
It is packaged as a python wheel and available from PyPI.
Installation
A stable version of ods is provided in the default python venv
which is synced automatically if you have pre-commit
hooks installed.
While inside the Onyx repository, activate the root project's venv,
source .venv/bin/activate
If you prefer to use the latest version of ods and not the stable version in the pyproject.toml,
uvx --from onyx-devtools ods
Autocomplete
ods provides autocomplete for bash, fish, powershell and zsh shells.
For more information, see ods completion <shell> --help for your respective <shell>.
zsh
Linux
ods completion zsh | sudo tee "${fpath[1]}/_ods" > /dev/null
macOS
ods completion zsh > $(brew --prefix)/share/zsh/site-functions/_ods
bash
ods completion bash | sudo tee /etc/bash_completion.d/ods > /dev/null
Note: bash completion requires the bash-completion package be installed.
Upgrading
To upgrade the stable version, upgrade it as you would any other requirement.
Building from source
Generally, go build . or go install . are sufficient.
go build . will output a tools/ods/ods binary which you can call normally,
./ods --version
while go install . will output to your GOPATH (defaults ~/go/bin/ods),
~/go/bin/ods --version
Typically, GOPATH is added to your shell's PATH, but this may be confused easily during development
with the pip version of ods installed in the Onyx venv.
To build the wheel,
uv build --wheel
To build and install the wheel,
uv pip install .
Deploy
Releases are deployed automatically when git tags prefaced with ods/ are pushed to GitHub.
The release-tag package can be used to calculate and push the next tag automatically,
tag --prefix ods
See also, .github/workflows/release-devtools.yml.