zoi-rs 1.10.0

Universal Package Manager & Environment Setup Tool
Documentation
use crate::pkg::{local, types};
use anyhow::Result;

pub fn create_manifest(
    pkg: &types::Package,
    reason: types::InstallReason,
    installed_dependencies: Vec<String>,
    install_method: Option<String>,
    installed_files: Vec<String>,
    registry_handle: &str,
    chosen_options: &[String],
    chosen_optionals: &[String],
    sub_package: Option<String>,
) -> Result<types::InstallManifest> {
    Ok(types::InstallManifest {
        name: pkg.name.clone(),
        version: pkg.version.clone().expect("Version should be resolved"),
        sub_package,
        repo: pkg.repo.clone(),
        registry_handle: registry_handle.to_string(),
        package_type: pkg.package_type,
        reason,
        scope: pkg.scope,
        bins: pkg.bins.clone(),
        conflicts: pkg.conflicts.clone(),
        replaces: pkg.replaces.clone(),
        provides: pkg.provides.clone(),
        backup: pkg.backup.clone(),
        installed_dependencies,
        chosen_options: chosen_options.to_vec(),
        chosen_optionals: chosen_optionals.to_vec(),
        install_method,
        service: pkg.service.clone(),
        installed_files,
        installed_size: pkg.installed_size,
    })
}

pub fn write_manifest(
    pkg: &types::Package,
    reason: types::InstallReason,
    installed_dependencies: Vec<String>,
    install_method: Option<String>,
    installed_files: Vec<String>,
    registry_handle: &str,
    chosen_options: &[String],
    chosen_optionals: &[String],
    sub_package: Option<String>,
) -> Result<()> {
    let manifest = create_manifest(
        pkg,
        reason,
        installed_dependencies,
        install_method,
        installed_files,
        registry_handle,
        chosen_options,
        chosen_optionals,
        sub_package,
    )?;
    local::write_manifest(&manifest)
}