Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
28bb541
docs(spec): add Rust migration design
sebastien-boulle Jul 2, 2026
67a1651
docs(spec): add TDD, coverage, CI and release constraints
sebastien-boulle Jul 2, 2026
280fb35
docs(spec): add quality cadence and draft PR to workflow
sebastien-boulle Jul 2, 2026
9c8603a
docs(spec): add repo documentation updates as a deliverable
sebastien-boulle Jul 2, 2026
b3b805c
docs(spec): set CI coverage hard-fail floor at 90%
sebastien-boulle Jul 2, 2026
7d82748
docs(plan): add Rust migration implementation plan
sebastien-boulle Jul 2, 2026
ef67242
chore(rust): scaffold cargo package and CI workflow
sebastien-boulle Jul 2, 2026
261800c
feat(error): add ValidationError with exit codes
sebastien-boulle Jul 2, 2026
35b8ce7
feat(config): add Config with env/flag resolution
sebastien-boulle Jul 2, 2026
19d0cba
feat(patterns): port validator regexes to Rust
sebastien-boulle Jul 2, 2026
1e683ca
feat(parser): port commit structure state machine
sebastien-boulle Jul 2, 2026
36760cd
feat(validate): port per-rule validation functions
sebastien-boulle Jul 2, 2026
9fe05db
feat(lib): orchestrate full commit validation
sebastien-boulle Jul 2, 2026
e0ecb65
feat(preprocess): port merge/comment message handling
sebastien-boulle Jul 2, 2026
7953e51
feat(cli): add message subcommand with flag/env config
sebastien-boulle Jul 2, 2026
96cdfff
feat(cli): add range subcommand via git subprocess
sebastien-boulle Jul 2, 2026
2d50b8c
chore(release): build cross-platform binaries on tag
sebastien-boulle Jul 2, 2026
dabd18c
feat(action): run prebuilt rust binary in composite action
sebastien-boulle Jul 2, 2026
44b137a
feat(hooks): download prebuilt binary in pre-commit and pre-push
sebastien-boulle Jul 2, 2026
c08eb50
docs(readme): document rust binary and remove bash implementation
sebastien-boulle Jul 2, 2026
b96c6d4
fix(validator): correct preprocess trailing-newline and download/summ…
sebastien-boulle Jul 2, 2026
f8ae410
refactor(config): use is_some_and for env flag resolution
sebastien-boulle Jul 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 20 additions & 15 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
name: 'Automated tests'

---
name: CI
on:
[pull_request, push]
push:
branches: [master]
pull_request:

jobs:
tests:
test:
runs-on: ubuntu-latest

steps:
- name: Install bats
run: |
git clone https://github.com/bats-core/bats-core.git $HOME/bats-core
sudo $HOME/bats-core/install.sh /usr/local

- name: Checkout
uses: actions/checkout@v2

- name: Unit tests
run: bats ./*.bats
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Format
run: cargo fmt --all -- --check
- name: Clippy
run: cargo clippy --all-targets -- -D warnings
- name: Test
run: cargo test --all-targets
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
- name: Coverage (fail under 90%)
run: cargo llvm-cov --all-targets --fail-under-lines 90
48 changes: 48 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
name: Release
on:
push:
tags: ["v*"]

permissions:
contents: write

jobs:
build:
strategy:
matrix:
include:
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
- target: aarch64-unknown-linux-musl
os: ubuntu-latest
- target: x86_64-apple-darwin
os: macos-latest
- target: aarch64-apple-darwin
os: macos-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install cross-compilation deps (linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y musl-tools
cargo install cross --locked
- name: Build (linux via cross)
if: runner.os == 'Linux'
run: cross build --release --target ${{ matrix.target }}
- name: Build (macos)
if: runner.os == 'macOS'
run: cargo build --release --target ${{ matrix.target }}
- name: Rename artifact
run: |
cp target/${{ matrix.target }}/release/commit-message-validator \
commit-message-validator-${{ matrix.target }}
- name: Attach to release
uses: softprops/action-gh-release@v2
with:
files: commit-message-validator-${{ matrix.target }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
venv
/target
3 changes: 2 additions & 1 deletion .pre-commit-hooks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@
- id: commit-message-validator
name: Commit Message Validator
description: Checks that commit messages are compliant with Lumapps rules.
entry: check_message.sh
entry: hooks/commit-message-validator message
language: script
stages: [commit-msg]
Loading
Loading