use std::path::PathBuf;
pub(super) const ROOT_ROLE: &str = "root";
pub(super) const WASM_STORE_ROLE: &str = "wasm_store";
pub(super) const LOCAL_ARTIFACT_ROOT_RELATIVE: &str = ".icp/local/canisters";
pub(super) const WASM_TARGET: &str = "wasm32-unknown-unknown";
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct CanisterArtifactBuildSpec {
pub(crate) role: String,
pub(crate) package_name: String,
pub(crate) package_manifest_path: PathBuf,
pub(crate) artifact_root: PathBuf,
pub(crate) wasm_path: PathBuf,
pub(crate) wasm_gz_path: PathBuf,
pub(crate) did_path: PathBuf,
}
#[derive(Clone, Debug)]
pub struct CanisterArtifactBuildOutput {
pub artifact_root: PathBuf,
pub wasm_path: PathBuf,
pub wasm_gz_path: PathBuf,
pub did_path: PathBuf,
pub transforms: Vec<ArtifactTransformOutput>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ArtifactTransformOutput {
pub role: String,
pub transform: ArtifactTransformKind,
pub mode: ArtifactTransformMode,
pub tool: String,
pub tool_version: Option<String>,
pub outcome: ArtifactTransformOutcome,
}
impl ArtifactTransformOutput {
pub(crate) fn not_requested(role: &str, transform: ArtifactTransformKind) -> Self {
Self {
role: role.to_string(),
transform,
mode: ArtifactTransformMode::Optional,
tool: "ic-wasm".to_string(),
tool_version: None,
outcome: ArtifactTransformOutcome::NotRequested,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ArtifactTransformKind {
Shrink,
CandidMetadata,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ArtifactTransformMode {
Optional,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ArtifactTransformOutcome {
Applied,
ToolUnavailable,
NotRequested,
}
#[derive(Clone, Debug)]
pub struct CurrentCanisterArtifactBuildOutput {
pub(crate) role: String,
pub(crate) output: CanisterArtifactBuildOutput,
}