Skip to content

bbopen/module_contracts

module_contracts

Package Version Hex Docs

Build-time module contract verification for Gleam — enforce that paired modules stay in sync.

Installation

gleam add module_contracts

Usage

Create a contract check entrypoint in your package:

import module_contracts
import module_contracts/rule

pub fn main() {
  module_contracts.check(
    interface_path: "build/dev/docs/my_package/package-interface.json",
    rules: [
      module_contracts.mirror_rule(
        source: "my_package/headless/button",
        target: "my_package/button",
        prefix_params: [rule.Labeled(label: "context")],
      )
        |> module_contracts.with_exceptions(exceptions: ["button"]),
      module_contracts.shared_types(
        module_a: "my_package/headless/button",
        module_b: "my_package/button",
        type_names: ["ButtonConfig"],
      ),
    ],
  )
}

Then run it in your build chain:

gleam export package-interface --out build/dev/docs/my_package/package-interface.json
gleam run -m contract_test

Spec

See SPEC.md for the full technical specification.

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors