Skip to content

Latest commit

 

History

History
51 lines (39 loc) · 1.28 KB

File metadata and controls

51 lines (39 loc) · 1.28 KB

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.