canic-host 0.69.5

Host-side build, install, deployment, and fleet-template library for Canic workspaces
Documentation
mod build;
mod linkage;
mod validation;

use super::super::{
    ensure::ensure_execution_receipt_field, error::ArtifactPromotionExecutionReceiptError,
    request::ArtifactPromotionExecutionReceiptRequest,
};
use super::report::validate_artifact_promotion_provenance_report;
use crate::deployment_truth::ArtifactPromotionExecutionReceiptV1;

use build::build_artifact_promotion_execution_receipt;
use linkage::{
    ensure_execution_receipt_provenance_ready, validate_deployment_receipt_for_promotion,
};

pub use validation::validate_artifact_promotion_execution_receipt;

pub fn artifact_promotion_execution_receipt(
    request: ArtifactPromotionExecutionReceiptRequest,
) -> Result<ArtifactPromotionExecutionReceiptV1, ArtifactPromotionExecutionReceiptError> {
    ensure_execution_receipt_field("receipt_id", &request.receipt_id)?;
    validate_artifact_promotion_provenance_report(&request.provenance_report)?;
    ensure_execution_receipt_provenance_ready(request.provenance_report.status)?;
    validate_deployment_receipt_for_promotion(
        &request.deployment_receipt,
        &request.provenance_report,
    )?;
    let receipt = build_artifact_promotion_execution_receipt(request);
    validate_artifact_promotion_execution_receipt(&receipt)?;
    Ok(receipt)
}