# 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](https://direnv.net/) 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 ```bash python -m clan_cli.webui --reload --no-open ``` Add this `launch.json` to your .vscode directory to have working breakpoints in your vscode editor. ```json { "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: ```console pytest -n0 -s ``` You can also run a single test like this: ```console pytest -n0 -s tests/test_secrets_cli.py::test_users ``` ## Debugging functions Debugging functions can be found under `src/debug.py` quite interesting is the function repro_env_break() which drops you into a shell with the test environment loaded.