Skip to content

Commit cfeae1b

Browse files
committed
cargo-rail: preparing for asciinema demos
1 parent 2fa40b5 commit cfeae1b

File tree

7 files changed

+216
-7
lines changed

7 files changed

+216
-7
lines changed

.gitignore

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,11 @@ AGENTS.md
2121
*.key
2222

2323
# Documentation
24-
docs/design-no_op-experimental
2524
rules.md
26-
ARCHITECTURE.md
2725
style.md
28-
demos/
29-
test.md
30-
examples/RECORDING_TEMPLATE.md
31-
examples/issues.md
32-
commands_check.md
26+
examples/split-recording-guide.txt
27+
examples/unify-recording-guide.txt
28+
examples/release-recording-guide.txt
3329

3430
# Cargo-Rail (Testing)
3531
*rail.toml

examples/release/README.md

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# release demo
2+
3+
Demonstrates release validation and planning using tikv (70+ component workspace).
4+
5+
## Workflow
6+
7+
```bash
8+
cargo rail init # Base config
9+
cargo rail release init tikv # Configure crate for release
10+
cargo rail release check tikv # Basic validation
11+
cargo rail release check tikv --extended # Full validation (dry-run, MSRV)
12+
cargo rail release run tikv --check # Preview release plan
13+
cargo rail release run tikv --bump minor # Execute minor release
14+
```
15+
16+
## Config
17+
18+
```toml
19+
[release]
20+
tag_prefix = "v"
21+
tag_format = "{crate}-{prefix}{version}"
22+
require_clean = true
23+
publish_delay = 5
24+
create_github_release = false
25+
require_changelog_entries = false
26+
27+
[crates.tikv.release]
28+
publish = false
29+
```
30+
31+
| Option | Value | Why |
32+
|--------|-------|-----|
33+
| `tag_format` | `{crate}-{prefix}{version}` | Produces `tikv-v9.0.1` style tags |
34+
| `require_clean` | `true` | Enforce clean git state |
35+
| `create_github_release` | `false` | Skip gh CLI for demo |
36+
| `publish` | `false` | tikv isn't published to crates.io |
37+
38+
## What this shows
39+
40+
- `cargo rail release init` - Configure a crate for release
41+
- `cargo rail release check` - Basic validation
42+
- `cargo rail release check --extended` - Full dry-run + MSRV check
43+
- `cargo rail release run --check` - Preview release plan
44+
- `--bump patch/minor/major` - Version bump options
45+
- `--skip-publish` - Tag-only releases

examples/split/README.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# split/sync demo
2+
3+
Demonstrates crate extraction with git history preservation using ruff's `ruff_cache` crate.
4+
5+
## Workflow
6+
7+
```bash
8+
cargo rail init # Base config
9+
cargo rail split init ruff_cache # Configure crate for split
10+
cargo rail split run ruff_cache --check # Preview
11+
cargo rail split run ruff_cache # Execute split
12+
cargo rail sync ruff_cache --check # Preview sync
13+
```
14+
15+
## Config
16+
17+
```toml
18+
[crates.ruff_cache.split]
19+
remote = "/tmp/ruff-split-test"
20+
branch = "main"
21+
mode = "single"
22+
paths = [{ crate = "crates/ruff_cache" }]
23+
include = ["LICENSE"]
24+
```
25+
26+
| Option | Value | Why |
27+
|--------|-------|-----|
28+
| `remote` | `/tmp/...` | Local path for demo (use git URL in production) |
29+
| `mode` | `single` | One crate per split repo |
30+
| `paths` | `[{ crate = "..." }]` | Crate location in monorepo |
31+
| `include` | `["LICENSE"]` | Extra files to copy |
32+
33+
## What this shows
34+
35+
- `cargo rail split init` - Configure a crate for splitting
36+
- `cargo rail split run --check` - Preview before executing
37+
- `cargo rail split run` - Extract crate with full git history
38+
- `cargo rail sync --to-remote` - Push monorepo changes to split
39+
- `cargo rail sync --from-remote` - Pull split repo changes back

examples/unify/helix-db/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# helix-db unify demo
2+
3+
Emerging graph database workspace (6 crates). Demonstrates unification on a growing project.
4+
5+
## Config choices
6+
7+
```toml
8+
[unify]
9+
msrv = true
10+
detect_unused = true
11+
remove_unused = true
12+
prune_dead_features = true
13+
strict_version_compat = true
14+
```
15+
16+
| Option | Value | Why |
17+
|--------|-------|-----|
18+
| `msrv` | true | Compute MSRV as project matures |
19+
| `detect_unused` | true | Keep deps clean during rapid development |
20+
| `remove_unused` | true | Auto-clean unused deps |
21+
| `prune_dead_features` | true | Remove feature cruft |
22+
| `strict_version_compat` | true | Safe defaults for new project |
23+
24+
## What this shows
25+
26+
- cargo-rail on a small, actively developed workspace
27+
- Clean unification for projects heading toward v1
28+
- Standard workflow: init → check → unify → verify

examples/unify/polars/README.md

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# polars unify demo
2+
3+
Large data processing workspace (50+ crates, pyo3 bindings). Aggressive settings.
4+
5+
## Config choices
6+
7+
```toml
8+
targets = ["x86_64-unknown-linux-gnu", "aarch64-apple-darwin"]
9+
10+
[unify]
11+
msrv = true
12+
detect_unused = true
13+
remove_unused = true
14+
prune_dead_features = true
15+
pin_transitives = true
16+
transitive_host = "root"
17+
strict_version_compat = false
18+
major_version_conflict = "bump"
19+
```
20+
21+
| Option | Value | Why |
22+
|--------|-------|-----|
23+
| `msrv` | true | Compute floor for edition 2024 workspace |
24+
| `detect_unused` | true | Find orphaned deps in large workspace |
25+
| `remove_unused` | true | Auto-clean |
26+
| `prune_dead_features` | true | Many optional features across crates |
27+
| `pin_transitives` | true | **Key demo**: workspace-hack replacement |
28+
| `transitive_host` | root | Pin transitives in root Cargo.toml |
29+
| `strict_version_compat` | false | Allow version flexibility |
30+
| `major_version_conflict` | bump | Force highest resolved version |
31+
32+
## What this shows
33+
34+
- Handling large workspace with 50+ crates
35+
- `pin_transitives` as cargo-hakari replacement
36+
- Aggressive `major_version_conflict = "bump"` for leaner graph
37+
- polars already uses `[workspace.dependencies]` - cargo-rail enhances it

examples/unify/ripgrep/README.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# ripgrep unify demo
2+
3+
Small, focused CLI workspace (9 crates). Demonstrates baseline unification.
4+
5+
## Config choices
6+
7+
```toml
8+
targets = ["x86_64-unknown-linux-gnu", "aarch64-apple-darwin"]
9+
10+
[unify]
11+
msrv = true
12+
detect_unused = true
13+
remove_unused = true
14+
prune_dead_features = true
15+
strict_version_compat = true
16+
```
17+
18+
| Option | Value | Why |
19+
|--------|-------|-----|
20+
| `msrv` | true | ripgrep already sets `rust-version`; verify cargo-rail computes same |
21+
| `detect_unused` | true | Find any deps declared but not resolved |
22+
| `remove_unused` | true | Auto-clean them |
23+
| `prune_dead_features` | true | Remove empty feature no-ops |
24+
| `strict_version_compat` | true | Default safety - no surprises |
25+
26+
## What this shows
27+
28+
- Basic unification flow on a well-maintained workspace
29+
- MSRV computation matching existing `rust-version = "1.85"`
30+
- Fast execution on small workspace

examples/unify/tokio/README.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# tokio unify demo
2+
3+
Foundational async runtime (5 public + 5 internal crates). Conservative settings.
4+
5+
## Config choices
6+
7+
```toml
8+
targets = ["x86_64-unknown-linux-gnu", "aarch64-apple-darwin"]
9+
10+
[unify]
11+
msrv = true
12+
detect_unused = true
13+
remove_unused = true
14+
prune_dead_features = true
15+
strict_version_compat = true
16+
exact_pin_handling = "warn"
17+
major_version_conflict = "warn"
18+
```
19+
20+
| Option | Value | Why |
21+
|--------|-------|-----|
22+
| `msrv` | true | Compute buildable floor from deps |
23+
| `detect_unused` | true | Ecosystem crate - should be clean |
24+
| `remove_unused` | true | Auto-apply cleanup |
25+
| `prune_dead_features` | true | tokio has many conditional features |
26+
| `strict_version_compat` | true | Conservative - don't break ecosystem |
27+
| `exact_pin_handling` | warn | Report any exact pins but don't fail |
28+
| `major_version_conflict` | warn | Skip conflicts, don't force bump |
29+
30+
## What this shows
31+
32+
- Safe unification on core ecosystem library
33+
- Conservative version handling (warn, don't break)
34+
- Multi-crate workspace with internal test crates

0 commit comments

Comments
 (0)