Skip to content

openlawlibrary/stelae

Repository files navigation

Stelae

Stelae is a system for distributing, preserving, and authenticating laws.

Contributing

Setting up environment

  1. Install dependencies:
  • Windows:
  • Linux:
    • sudo apt-get install build-essential pkg-config libssl-dev
  1. Install Rust
  2. Install Just (Our build tool)
  3. Windows: install Git Bash, included in Git for Windows.
  4. Windows (Optional): install NuShell (A fast, cross-platform shell used by Just)
  5. We recommend using VSCode (default settings provided in repo), but you can use any editor you like.

Development

  • Lints must pass before merging into master
  • All code must have tests. Tests should conform to our testing guidelines.
  • Run just from within the repository to list all available just commands. Currently:
    • bench: Run all benchmarks
    • ci: Continuous integration - lint, test, benchmark
    • clippy *FLAGS: Run clippy maximum strictness. Passes through any flags to clippy.
    • default: List all available commands
    • format: Format code
    • lint: Format code and run strict clippy
    • test: Run all tests
      • Install nextest with command cargo install cargo-nextest
  • On windows, especially, you may wish to run just through the nu shell, which can be done by calling all commands with the --shell command, e.g. just --shell nu lint.

Logging

The ENV variable RUST_LOG can be set with one of trace, debug, info, warn, error. Filters can be set based on the target components seen in the logs lines, for example: to use trace but turn down the noise from the Actix dispatcher: RUST_LOG="trace,actix_http::h1::dispatcher=warn"

See tracing-subscriber docs and env_logger syntax.

Q&A

  • Why do we suggest NuShell?
    • NuShell is almost as fast on Windows as cmd, but is compattible with bash. If you do not use NuShell on windows, you will need to make sure Git Bash is installed. If you have performance issues, consider switching to Nu.