1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Build config for a pip-installable `keel` CLI distribution — maturin's `bin`
# bindings (auto-detected: this crate has a [[bin]] target and neither a pyo3
# dependency nor a cdylib target — see crates/keel-cli/Cargo.toml) compile the
# `keel` binary and place it under the wheel's `<pkg>.data/scripts/` directory,
# where pip/uv/uvx put it on PATH. No Python glue, no libpython link: one
# prebuilt binary per platform — NFR5's "static Rust binary" promise, shipped
# through pip as well as `cargo install`.
#
# This is a SEPARATE distribution from crates/keel-py (which ships the
# `keel_core` native extension module via pyo3): the CLI needs no pyo3
# bindings, and maturin does not support mixing `bin` and cdylib/pyo3 targets
# in one project. Published as `keelrun-cli` (docs/naming-decision.md): the
# plain `keel-cli` name is taken on PyPI (and on crates.io) by an unrelated
# project; `cargo install keelrun-cli` / `pip install keelrun-cli` both give
# the `keel` binary on PATH.
#
# Local verification (one distribution short of the literal
# docs/sprint-plan.md release-gate command `uvx keel run` — that spelling
# needs the PyPI name `keel` itself, i.e. the `keelrun` front end wheel, not
# this CLI wheel):
#
# python3 -m venv /tmp/keel-cli-build && . /tmp/keel-cli-build/bin/activate
# pip install 'maturin>=1.7,<2'
# maturin build --release -m crates/keel-cli/Cargo.toml -o dist
# uvx --from ./dist/keelrun_cli-*.whl keel --help
# uvx --from ./dist/keelrun_cli-*.whl keel explain KEEL-E011 --json
[]
= ["maturin>=1.7,<2"]
= "maturin"
[]
# Distribution name; the installed EXECUTABLE name is `keel` (the [[bin]] name
# in Cargo.toml). Version is read from the crate (workspace version) —
# scripts/check-versions.py asserts this file stays `dynamic`, same rule as
# crates/keel-py/pyproject.toml.
= "keelrun-cli"
= "Apache-2.0"
= ["version"]
= "The keel CLI (run | init | doctor | status | explain | flows | trace) as a prebuilt binary — no Rust toolchain required to install it."
= ">=3.8"
= [
"Programming Language :: Rust",
"Environment :: Console",
]
[]
= "bin"
= true