Skip to main content

releasaurus_core/packages/
resolved.rs

1use regex::Regex;
2use std::path::PathBuf;
3
4use crate::{
5    analyzer::config::AnalyzerConfig,
6    config::{prerelease::PrereleaseConfig, release_type::ReleaseType},
7};
8
9/// Compiled version of AdditionalManifest with pre-compiled regex.
10///
11/// This is populated during config resolution to avoid repeated
12/// regex compilation during manifest processing.
13#[derive(Debug, Clone)]
14pub struct CompiledAdditionalManifest {
15    /// The path to the manifest file relative to package path
16    pub path: PathBuf,
17    /// The compiled regex to use to match and replace versions
18    pub version_regex: Regex,
19}
20
21/// A fully resolved package configuration ready for processing.
22///
23/// This type represents a package after all configuration sources
24/// have been merged and validated. All optional values have been
25/// resolved to concrete values, paths have been normalized, and
26/// complex configurations (like analyzer config) have been built.
27#[derive(Debug, Clone)]
28pub struct ResolvedPackage {
29    pub name: String,
30    pub normalized_workspace_root: PathBuf,
31    pub normalized_full_path: PathBuf,
32    pub release_type: ReleaseType,
33    pub tag_prefix: String,
34    pub sub_packages: Vec<ResolvedPackage>,
35    pub prerelease: Option<PrereleaseConfig>,
36    pub auto_start_next: bool,
37    pub normalized_additional_paths: Vec<PathBuf>,
38    pub compiled_additional_manifests: Vec<CompiledAdditionalManifest>,
39    pub analyzer_config: AnalyzerConfig,
40}