CONTRIBUTING.md 1.79 KB
Newer Older
David Runge's avatar
David Runge committed
1
2
3
4
5
6
# Contributing

These are the contribution guidelines for archlinux-keyring.
All code contributions fall under the terms of the GPL-3.0-or-later (see
[LICENSE](LICENSE)).

7
8
9
Please read our distribution-wide [Code of
Conduct](https://terms.archlinux.org/docs/code-of-conduct/) before
contributing, to understand what actions will and will not be tolerated.
David Runge's avatar
David Runge committed
10

11
12
Development of archlinux-keyring takes place on Arch Linux' Gitlab:
https://gitlab.archlinux.org/archlinux/archlinux-keyring.
David Runge's avatar
David Runge committed
13

14
15
Any merge request to the repository requires two approvals of authorized
approvers (the current main key holders).
David Runge's avatar
David Runge committed
16

17
## Discussion
David Runge's avatar
David Runge committed
18

19
20
21
22
Discussion around archlinux-keyring may take place on the [arch-projects
mailing list](https://lists.archlinux.org/listinfo/arch-projects) and in
[#archlinux-projects](ircs://irc.libera.chat/archlinux-projects) on [Libera
Chat](https://libera.chat/).
David Runge's avatar
David Runge committed
23

24
25
All past and present authors of archlinux-keyring are listed in
[AUTHORS](AUTHORS.md).
David Runge's avatar
David Runge committed
26

27
## Requirements
David Runge's avatar
David Runge committed
28

29
30
The following additional packages need to be installed to be able to lint
and develop this project:
David Runge's avatar
David Runge committed
31

32
* python-black
33
* python-coverage
34
* python-isort
35
* python-pytest
36
* python-tomli
37
38
* flake8
* mypy
David Runge's avatar
David Runge committed
39

40
## Keyringctl
David Runge's avatar
David Runge committed
41

42
43
The `keyringctl` script is written in typed python, which makes use of
[sequoia](https://sequoia-pgp.org/)'s `sq` command.
David Runge's avatar
David Runge committed
44

45
46
The script is type checked, linted and formatted using standard tooling.
When providing a merge request make sure to run `make lint`.
47
48
49
50
51
52
53
54
55
56
57
58

## Testing

Test cases are developed per module in the [test](test) directory and should
consist of atomic single expectation tests. A Huge test case asserting various
different expectations are discouraged and should be split into finer grained
test cases.

To execute all tests using pytest
```bash
make test
```
59
60
61
62
63

To run keyring integrity and consistency checks
```bash
make check
```