Expand description
Native release management for cuenv.
This crate provides a comprehensive release management subsystem within cuenv,
handling versioning, changelogs, and publishing. It replaces external tools like
changesets or sampo by integrating these workflows directly into cuenv’s
hermetic environment and task graph.
§Features
- Changeset Workflow: Centralized changeset storage in
.cuenv/changesets/ - Monorepo Awareness: Leverages cuenv’s workspace graph for dependency propagation
- Version Calculation: Semantic versioning with fixed and linked package groups
- Changelog Generation: Automated changelog updates per package and workspace
- Topological Publishing: Publishes packages in dependency order
§Architecture
The crate is organized around several core modules:
changeset- Changeset creation, parsing, and storageversion- Version calculation and bumping logicchangelog- Changelog generation and formattingconfig- Release configuration typespublish- Publishing workflow and topological ordering
§Example
ⓘ
use cuenv_release::{Changeset, ChangesetManager, BumpType};
use std::path::Path;
// Create a new changeset
let changeset = Changeset::new(
"Add new feature",
vec![("cuenv-core".to_string(), BumpType::Minor)],
Some("This adds a cool new feature".to_string()),
);
// Store it
let manager = ChangesetManager::new(Path::new("."));
manager.add(&changeset)?;Re-exports§
pub use changelog::ChangelogEntry;pub use changelog::ChangelogGenerator;pub use changeset::BumpType;pub use changeset::Changeset;pub use changeset::ChangesetManager;pub use changeset::PackageChange;pub use config::ChangelogConfig;pub use config::ReleaseConfig;pub use config::ReleaseGitConfig;pub use config::ReleasePackagesConfig;pub use error::Error;pub use error::Result;pub use publish::PublishPlan;pub use version::Version;pub use version::VersionCalculator;