Skip to content

Latest commit

 

History

History
53 lines (31 loc) · 1.76 KB

CONTRIBUTING.md

File metadata and controls

53 lines (31 loc) · 1.76 KB

Contributing

Thank you for your interest in contributing to senc!

This document lists some information that contributors should be aware of when contributing.

Development

senc is a multi-language project:

  • The core CLI runtime is implemented in rust.
  • Builtin functions are written in JavaScript.
  • Builtin types are written in TypeScript, specifically as DTS.

For rust components, we rely on cargo for the build chain and dependency management.

For the JavaScript and TypeScript components, we rely on pnpm for package management.

Running tests

To run the tests, you need to first pull down the JavaScript dependencies used in the fixtures with pnpm:

cd ./tests/fixtures
pnpm install

Afterwards, you can run the rust tests with cargo:

cargo test

CI

We primarily use CircleCI for our build process. This is to leverage the wide support of OS and architectures available to us (we ship binaries for linux_amd64, linux_arm64, darwin_arm64, and windows_amd64).

We also use GitHub Actions for very limited workflows that require tighter integration with GitHub, such as for PR title validation.

Note that the CircleCI config files are maintained using senc.

CD

We use semantic-release to manage our release process.

All tags are cut from the release branch. The consequence of this is that the source level versioning (e.g., in Cargo.toml) is managed directly on the release branch instead of main.