Contribution guidelines

Thank you for considering making a contribution to libunicornpkg!

Development tooling

We recommend using Nix for installing developer tooling.

Use nix develop to retrieve all of our development dependencies, or use Direnv with nix-direnv.

We use the just command runner. Instead of adding things to GitHub Actions, we prefer adding recipes to our Justfile that are then executed in GitHub Actions.

You can enter a preconfigured CraftOS-PC emulator by running just develop.

Code formatting

We use a variety of code formatters to avoid wasting time on discussions about code formatting.

These formatters should be invoked using treefmt, or using just autofix.

Linting

We use a handful of linters to avoid common pitfalls in our code. Run them using just lint.

Documentation

We use Sphinx combined with sphinx-lua-ls for documentation. The documentation can be built using just docs, and previewed using just docs-preview.

Unit tests

We use McFly for unit tests. Documentation for McFly is sparse, but the source code can be found here. Unit tests can be run in the CraftOS-PC emulator by running just test.

Please add unit tests when adding a new feature. Many examples can be found in test/unicorn.