pray-core 1.13.0

Core library for Prayfile, the package manager for the language placed before inference
Documentation
use crate::package_spec::PackageSpec;
use crate::package_upstream::next_upstream_constraint;

#[path = "package_spec_serialize.rs"]
mod serialize;
pub use serialize::render_package_spec;

pub fn fork_spec_after_refresh(
    local: &PackageSpec,
    new_upstream: &PackageSpec,
    local_prayspec_file: &str,
    clean_replica: bool,
    merged_content_paths: &[String],
) -> PackageSpec {
    let mut spec = local.clone();
    let mut files = vec![local_prayspec_file.to_string()];
    files.extend(merged_content_paths.iter().cloned());
    spec.files = files;
    if clean_replica {
        spec.exports = new_upstream.exports.clone();
        spec.templates = new_upstream.templates.clone();
    }
    if let Some(upstream) = spec.upstream.as_mut() {
        upstream.name = new_upstream.name.clone();
        upstream.constraint = next_upstream_constraint(&upstream.constraint, &new_upstream.version);
    }
    spec
}

#[cfg(test)]
#[path = "package_spec_render_tests.rs"]
mod tests;