Skip to content

Modernize rain.cli: rainix bump, drop submodule, DCL + REUSE, rainix reusables, Cachix publish#19

Merged
thedavidmeister merged 4 commits into
mainfrom
2026-05-30-update-rainix
May 30, 2026
Merged

Modernize rain.cli: rainix bump, drop submodule, DCL + REUSE, rainix reusables, Cachix publish#19
thedavidmeister merged 4 commits into
mainfrom
2026-05-30-update-rainix

Conversation

@thedavidmeister
Copy link
Copy Markdown
Contributor

@thedavidmeister thedavidmeister commented May 30, 2026

Summary

End-to-end modernization of rain.cli, in three commits:

  1. a64ce65 Bump rainix to latest (998bd91d -> ae2b77d2) — pulls in the reusables, slim shells, and the new build-meta.sh hook.
  2. a64fb64 Drop rain.metadata submodule; switch to published crate; DCL + REUSE:
    • rain-metadata 0.1.1 from crates.io (was a path dep fed by a fetchgit + buildPhase copy into ./lib/rain.metadata).
    • tokio 1.x (pinning 1.28.0 broke transitive tokio-stream 0.1.18, which needs Receiver::capacity/max_capacity added in 1.41).
    • await the now-async rain_metadata::cli::dispatch.
    • flake.nix loses the fetchgit + buildPhase staging; buildRustPackage handles the rust build cleanly. inherit cleanup. Drop unused self.
    • License: CAL-1.0 -> LicenseRef-DCL-1.0 via license-file = "LICENSE" with LICENSE -> LICENSES/LicenseRef-DCL-1.0.txt symlink; REUSE.toml covers tracked files; reuse lint passes (11/11).
    • gitignore the git-hooks.nix-generated .pre-commit-config.yaml.
  3. 2c88098 Modernize CI: rainix reusables + Cachix-publish nix-build:
    • rs-test / rs-static / legal / package-release: thin wrappers over the rainix reusables (rainix-rs-test, rainix-rs-static, rainix-sol-legal, rainix-autopublish). package-release passes crate=rain_cli + level=alpha.
    • nix-build: builds .#rain and wires cachix-action to push to the rainlanguage cache, so downstream nix shell github:rainlanguage/rain.cli hits cache instead of recompiling.
    • Drops the legacy test-build.yaml + manual-rs-release.yml.

Test plan

  • All CI checks green (rs-test, rs-static, legal, nix-build, package-release no-op until merged).
  • After merge, confirm the rain derivation lands in cachix.org/rainlanguage and a downstream nix shell github:rainlanguage/rain.cli resolves from cache.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added automated CI/CD workflows for continuous build and package releases
  • Chores

    • Removed legacy manual release workflow
    • Simplified build configuration and dependencies
    • Updated project licensing with REUSE compliance framework

Review Change Stack

Brings in everything since 2026-05-13, notably the rainix-sol /
copy-artifacts / manual-sol-artifacts reusables and the new
build-meta.sh hook.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@thedavidmeister thedavidmeister self-assigned this May 30, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 30, 2026

Caution

Review failed

Pull request was closed or merged during review

Walkthrough

This PR modernizes the project's CI/CD infrastructure, simplifies the Nix build configuration, updates dependencies, and establishes licensing compliance. The changes migrate GitHub Actions workflows to rainix reusable templates, remove custom metadata handling from the flake, convert rain-metadata to a published crate, add DecentraLicense compliance metadata, and fix source code to support async dispatch.

Changes

Build and Licensing Modernization

Layer / File(s) Summary
CI/CD Workflow Migration to Rainix
.github/workflows/legal.yaml, .github/workflows/nix-build.yaml, .github/workflows/package-release.yaml, .github/workflows/rs-static.yaml, .github/workflows/rs-test.yaml
Five new workflows delegate execution to rainix reusable templates for legal checks, Nix builds with Cachix caching, crate publishing to crates.io, static checks, and test runs.
Nix Flake Simplification
flake.nix
Removed self from outputs, deleted custom rain-metadata-repo and build-cargo-lock packages, simplified packages.rain build with narrowed inputs, and wired devShells.default via inheritance from rainix defaults.
Dependency Updates and Code Fixes
Cargo.toml, src/main.rs
Cargo.toml relaxes tokio constraint to 1, switches rain-metadata from path to published crate 0.1.1, adds license-file metadata; src/main.rs fixes imports and adds .await to async metadata dispatch call.
License and Compliance Setup
LICENSE, LICENSES/LicenseRef-DCL-1.0.txt, REUSE.toml, .gitignore
LICENSE symlinked to DecentraLicense 1.0 text, REUSE.toml configured with SPDX metadata for repository and source files, .gitignore extended to exclude pre-commit config.
Documentation Formatting
README.md
Nix flakes installation instructions and bash alias guidance reflowed across multiple lines for readability; code fence marker adjusted.

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly summarizes the main changes: rainix version bump, removal of submodule, addition of DCL/REUSE licensing, use of rainix reusable workflows, and Cachix publishing integration.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 2026-05-30-update-rainix

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

thedavidmeister and others added 2 commits May 30, 2026 08:02
- Use rain-metadata 0.1.1 from crates.io (rain.cli's path dep was being
  fed by a fetchgit + buildPhase copy into ./lib/rain.metadata).
- Bump tokio to 1.x — pinning 1.28.0 broke transitive tokio-stream 0.1.18
  which needs Receiver::capacity / max_capacity added in tokio 1.41.
- Await the now-async rain_metadata::cli::dispatch.
- Drop unused `use clap::command;`.
- flake.nix loses the fetchgit-of-rain.metadata + the buildPhase that
  staged it into lib/; buildRustPackage handles the rust build cleanly.
- License: CAL-1.0 -> LicenseRef-DCL-1.0 via license-file = "LICENSE"
  with LICENSE -> LICENSES/LicenseRef-DCL-1.0.txt symlink. REUSE.toml
  covers tracked files in bulk; `reuse lint` passes.
- gitignore the git-hooks.nix-generated .pre-commit-config.yaml.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- rs-test / rs-static / legal / package-release: thin wrappers over the
  rainix reusables (rainix-rs-test, rainix-rs-static, rainix-sol-legal,
  rainix-autopublish). package-release passes crate=rain_cli and
  level=alpha to keep the existing alpha pre-release cadence.
- nix-build: builds `.#rain` with cachix-action wired to the
  rainlanguage cache so the published derivation lands there and
  downstream consumers (e.g. raindex's build-meta.sh nix-shelling
  github:rainlanguage/rain.cli) hit the cache instead of recompiling.
- Drop the legacy DeterminateSystems-based test-build.yaml and the
  bespoke manual-rs-release.yml.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@thedavidmeister thedavidmeister changed the title Bump rainix to latest Modernize rain.cli: rainix bump, drop submodule, DCL + REUSE, rainix reusables, Cachix publish May 30, 2026
The modernized rs-static reusable runs `pre-commit run --all-files`
which the legacy CI never did, so the bundled prettier hook now catches
README.md's pre-existing line-wrap + missing final newline.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@thedavidmeister thedavidmeister merged commit 15565ca into main May 30, 2026
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant