Thank you for your interest in contributing to actrun!
- MoonBit toolchain
- just command runner
- Node.js 18+ and pnpm (for action execution and the npm build)
- Git
git clone https://github.com/mizchi/actrun.git
cd actrun
just # check + testjust # check + test
just fmt # format code
just check # type check (moon check --deny-warn)
just test # run tests
just e2e # run E2E scenarios
just run # run mainThe CLI also ships as the @mizchi/actrun npm package. Build and smoke test it with:
just build-js # moon build (js) + node scripts/bundle-js.js -> dist/actrun.js, lib/actrun.js
node dist/actrun.js --help
just check-js # moon check --deny-warn --target jsnpm run build runs the same steps and is invoked automatically by prepublishOnly.
The release workflow attaches the npm pack tarball to the GitHub release and publishes
to npm when the NPM_TOKEN secret is configured.
Run the full release check to make sure everything passes:
just release-check # fmt + info + check + test + e2e| Directory/File | Purpose |
|---|---|
src/lib.mbt |
Contract types |
src/parser.mbt |
Workflow YAML parser |
src/trigger.mbt |
Push trigger matcher |
src/lowering.mbt |
Bitflow IR lowering |
src/executor.mbt |
Native host executor |
src/runtime.mbt |
Git workspace materialization |
src/main/main.mbt |
CLI entry point |
testdata/ |
Compatibility fixtures |
- MoonBit code uses
snake_casefor variables/functions,UpperCamelCasefor types and enums - Each code block is separated by
///| - Use
moon doc '<Type>'to explore APIs before implementing - Use
moon test --updateto update snapshot tests
We provide issue templates for:
- Bug Report - for unexpected behavior or errors
- Feature Request - for new features or enhancements
Please use the appropriate template when creating an issue.
- Fork the repository and create a branch from
main - Make your changes
- Ensure
just release-checkpasses - Fill in the PR template with a summary, changes, and test plan
- Submit the pull request
- Keep PRs focused on a single change
- Include test cases for new functionality
- Update snapshot tests with
just test-updateif needed - Link related issues in the PR description
By contributing, you agree that your contributions will be licensed under the Apache-2.0 License.