Legion CLI
Commandline Utilities for the Legion Alerting and Monitoring System
Setup & Usage
Installation
pip install -U legion-cli --user
Configuration
TODO
Usage
The key reference for using legion-cli is:
legion-cli --help
Development
Standards
- Be excellent to each other
- Code coverage must be at 100% for all new code, or a good reason must be provided for why a given bit of code is not covered.
- Example of an acceptable reason: "There is a bug in the code coverage tool and it says its missing this, but its not".
- Example of unacceptable reason: "This is just exception handling, its too annoying to cover it".
- The code must pass the following analytics tools. Similar exceptions are allowable as in rule 2.
pylint --disable=C0111,W1203,R0903 --max-line-length=100 ...flake8 --max-line-length=100 ...mypy --ignore-missing-imports --follow-imports=skip --strict-optional ...
- All incoming information from users, clients, and configurations should be validated.
- All internal arguments passing should be typechecked whenever possible with
typeguard.typechecked
Development Setup
Using poetry install from inside the repo directory:
pdm install
IDE Setup
Sublime Text 3
curl -sSL https://gitlab.com/-/snippets/2385805/raw/main/pdm.sublime-project.py | pdm run python > legion-cli.sublime-project
Testing
All testing should be done with pytest which is installed with the dev requirements.
To run all the unit tests, execute the following from the repo directory:
pdm run pytest
This should produce a coverage report in /path/to/legion-cli/htmlcov/
While developing, you can use watchexec to monitor the file system for changes and re-run the tests:
watchexec -r -e py,yaml pdm run pytest
To run a specific test file:
pdm run pytest tests/unit/test_config.py
To run a specific test:
pdm run pytest tests/unit/test_config.py::test_config_loading
For more information on testing, see the pytest.ini file as well as the documentation.
Integration Testing
For integration testing, this code uses testcontainers-rabbitmq. In order to enable this, you will need to install docker, and ensure that your user has the ability to interact with the docker service:
sudo apt install docker
sudo groupadd docker # may fail if the docker group already exists
sudo usermod -aG docker $USER
newgrp docker
docker run hello-world # verify that everything is working well
Building & Publishing to PyPi
You can use Twine to publish this code to PyPi assuming you have an account and the relevant project permissions. This can be configured using a ~/.pypirc file like so:
[distutils]
index-servers =
pypi
testpypi
[testpypi]
username = __token__
password = <PYPI TOKEN>
[pypi]
username = __token__
password = <PYPI TOKEN>
You can get the PyPi Tokens here: https://pypi.org/help/#apitoken
Once you have that set up, you can build, publish to the test server, and then the prod server with the following commands:
pdm build;
pdm run publish-test; # test
pdm run publish-prod; # prod
Release files for legion-cli 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| legion-cli-0.4.1.tar.gz | 26.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| legion_cli-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:51.7 kB
Release files / legion-cli-0.4.1.tar.gz
| Download URL | legion-cli-0.4.1.tar.gz |
|---|---|
| Size | 26.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0da2a0bdc00450f680a66a0125975b1cc94e84acebaaf9bd4a01e5e1083043d5
|
|
BLAKE2b-256 checksum How to use checksums |
70a484c4b6f50b60e4859c6bb2c35896fe335abfbc3feaa45826287353bda5a0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.19
|
Release files / legion_cli-0.4.1-py3-none-any.whl
| Download URL | legion_cli-0.4.1-py3-none-any.whl |
|---|---|
| Size | 24.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2da1a48d0eb766cfecd5e9946893e3fc3c73993a4ca18120eb9fc4be75d1e9c4
|
|
BLAKE2b-256 checksum How to use checksums |
0b63d496ab7c5e5d3e9c0f0fc10b9efd5bc1c7b68690de5bf1ee37190b36e9de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.9.19
|