Crate cuenv_release

Crate cuenv_release 

Source
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 storage
  • version - Version calculation and bumping logic
  • changelog - Changelog generation and formatting
  • config - Release configuration types
  • publish - 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;

Modules§

changelog
Changelog generation and formatting.
changeset
Changeset creation, storage, and parsing.
config
Release configuration types.
error
Error types for release management operations.
publish
Publishing workflow and topological ordering.
version
Version calculation and bumping logic.