Metadata-Version: 2.4
Name: beman-local-ci
Version: 0.3.1
Summary: Run Beman CI matrix locally via Docker
Author-email: The Beman Project <beman@bemanproject.org>
Requires-Python: >=3.12
Description-Content-Type: text/markdown
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
License-File: LICENSE
Requires-Dist: pyyaml
Project-URL: Homepage, https://github.com/bemanproject/beman-local-ci
Project-URL: Repository, https://github.com/bemanproject/beman-local-ci

# beman-local-ci

Run Beman CI matrix locally via Docker.

## Installation

```bash
uv pip install -e .
```

## Usage

```bash
# Run all jobs for a repository
beman-local-ci -C /path/to/repo

# Dry run to see what would be executed
beman-local-ci -C /path/to/repo --dry-run

# Control parallelism
beman-local-ci -C /path/to/repo -j 8 -p 4
```

## Options

- `-C DIR`: Repository directory (default: current directory)
- `-j N`: Build parallelism (default: CPU count when `-p 1`, CPU count / 2 otherwise)
- `-p N`: Max parallel CI jobs (default: auto based on Docker memory, use `all` for unlimited)
- `--dry-run`: Print commands without executing
- `--verbose`: Show detailed output
- `--track-performance`: Report peak CPU and memory usage for each job

## Filter syntax

All dimensions are independent — omitted ones match all values.

- `--compiler C1,C2`: Filter by compiler (gcc, clang). Starts a new filter group.
- `--versions V1,V2`: Filter by compiler versions
- `--cxxversions V1,V2`: Filter by C++ standard versions
- `--stdlibs S1,S2`: Filter by standard libraries
- `--tests T1,T2`: Filter by test types

Multiple `--compiler` flags create OR groups. Within a group, dimensions are ANDed.
Flags before the first `--compiler` create an implicit group (all compilers).

### Examples

```bash
# Run only gcc jobs
beman-local-ci -C /path/to/repo --compiler gcc

# Run only c++26 jobs (any compiler)
beman-local-ci -C /path/to/repo --cxxversions c++26

# Run gcc 15 c++26 jobs
beman-local-ci -C /path/to/repo --compiler gcc --versions 15 --cxxversions c++26

# Run gcc 15 OR clang 21 libc++ jobs
beman-local-ci --compiler gcc --versions 15 --compiler clang --versions 21 --stdlibs libc++
```

