release-tool 0.3.0

Configuration-driven release lifecycle for computed-parameter repositories
Documentation
mod docker_archive;
mod maven_reactor;
mod oci_image;

pub use docker_archive::DockerArchiveTarget;
pub use maven_reactor::MavenReactorTarget;
pub use oci_image::OciImageTarget;

use crate::domain::{ArtifactManifest, ReleaseCandidate, TargetPlan};
use anyhow::Result;
use std::collections::BTreeMap;
use std::path::Path;

pub type PreparedDependencies = BTreeMap<String, ArtifactManifest>;

pub trait TargetAdapter {
    fn resolve(&self, release: &ReleaseCandidate) -> Result<TargetPlan>;
    fn prepare(
        &self,
        plan: &TargetPlan,
        dependencies: &PreparedDependencies,
        staging: &Path,
    ) -> Result<ArtifactManifest>;
}