This makes the function usage less confusing (you can now tell from the call side what are flags and what is passed to nix-shell) and allows to use different flakes to download packages. |
||
---|---|---|
.. | ||
.vscode | ||
bin | ||
clan_cli | ||
tests | ||
.envrc | ||
default.nix | ||
deps-flake.nix | ||
enter_nix_sandbox.sh | ||
flake-module.nix | ||
pyproject.toml | ||
README.md | ||
shell.nix |
clan-cli
The clan-cli contains the command line interface as well as the graphical webui through the clan webui
command.
Hacking on the cli
We recommend setting up direnv to load the developement with nix.
If you do not have it set up you can also use nix develop
directly like this:
use flake .#clan-cli --builders ''
After you can use the local bin wrapper to test things in the cli:
./bin/clan
Hacking on the webui
By default the webui is build from a tarball available https://git.clan.lol/clan/-/packages/generic/ui/.
To start a local developement environment instead, use the --dev
flag:
./bin/clan webui --dev
This will spawn two webserver, a python one to for the api and a nodejs one that rebuilds the ui on the fly.
Run webui directly
Useful for vscode run and debug option
python -m clan_cli.webui --reload --no-open
Add this launch.json
to your .vscode directory to have working breakpoints in your vscode editor.
{
"version": "0.2.0",
"configurations": [
{
"name": "Clan Webui",
"type": "python",
"request": "launch",
"module": "clan_cli.webui",
"justMyCode": true,
"args": ["--reload", "--no-open", "--log-level", "debug"]
}
]
}
Run locally single-threaded for debugging
By default tests run in parallel using pytest-parallel.
pytest-parallel however breaks breakpoint()
. To disable it, use this:
pytest -n0 -s
You can also run a single test like this:
pytest -n0 -s tests/test_secrets_cli.py::test_users
Run tests in nix container
Run all impure checks
nix run .#impure-checks
Run all checks
nix flake check
Debugging functions
Debugging functions can be found under src/debug.py
quite interesting is the function breakpoint_shell() which drops you into a shell
with the test environment loaded.