model.rs (2759B)
1 use std::collections::BTreeMap; 2 3 use serde::Deserialize; 4 5 use crate::service::HardenedServiceTargets; 6 use crate::service_artifact::HardenedServiceArtifacts; 7 8 #[derive(Debug, Clone, Deserialize, PartialEq, Eq)] 9 #[serde(deny_unknown_fields)] 10 pub struct RadrootsRuntimeDistributionContract { 11 pub schema: String, 12 pub schema_version: u32, 13 pub owner_doc: String, 14 pub runtime_registry: String, 15 pub family: DistributionFamily, 16 pub channels: ChannelSet, 17 #[serde(default)] 18 pub artifact_adapters: BTreeMap<String, ArtifactAdapter>, 19 #[serde(default)] 20 pub archive_formats: BTreeMap<String, ArchiveFormat>, 21 #[serde(default)] 22 pub target_sets: BTreeMap<String, TargetSet>, 23 #[serde(default)] 24 pub targets: BTreeMap<String, TargetSpec>, 25 #[serde(default)] 26 pub runtime: Vec<RuntimeDistributionEntry>, 27 pub service_targets: HardenedServiceTargets, 28 pub service_artifacts: HardenedServiceArtifacts, 29 } 30 31 #[derive(Debug, Clone, Deserialize, PartialEq, Eq)] 32 #[serde(deny_unknown_fields)] 33 pub struct DistributionFamily { 34 pub id: String, 35 pub canonical_installer_engine: String, 36 pub human_install_facade: String, 37 pub tooling_consumption: String, 38 pub independent_runtime_versions: bool, 39 pub version_resolution: String, 40 pub artifact_verification_required: bool, 41 } 42 43 #[derive(Debug, Clone, Deserialize, PartialEq, Eq)] 44 #[serde(deny_unknown_fields)] 45 pub struct ChannelSet { 46 #[serde(default)] 47 pub active: Vec<String>, 48 #[serde(default)] 49 pub defined: Vec<String>, 50 } 51 52 #[derive(Debug, Clone, Deserialize, PartialEq, Eq)] 53 #[serde(deny_unknown_fields)] 54 pub struct ArtifactAdapter { 55 pub kind: String, 56 #[serde(default)] 57 pub supported_archive_formats: Vec<String>, 58 pub layout: String, 59 } 60 61 #[derive(Debug, Clone, Deserialize, PartialEq, Eq)] 62 #[serde(deny_unknown_fields)] 63 pub struct ArchiveFormat { 64 pub extension: String, 65 #[serde(default)] 66 pub platforms: Vec<String>, 67 } 68 69 #[derive(Debug, Clone, Deserialize, PartialEq, Eq)] 70 #[serde(deny_unknown_fields)] 71 pub struct TargetSet { 72 #[serde(default)] 73 pub targets: Vec<String>, 74 } 75 76 #[derive(Debug, Clone, Deserialize, PartialEq, Eq)] 77 #[serde(deny_unknown_fields)] 78 pub struct TargetSpec { 79 pub os: String, 80 pub arch: String, 81 pub archive_format: Option<String>, 82 } 83 84 #[derive(Debug, Clone, Deserialize, PartialEq, Eq)] 85 #[serde(deny_unknown_fields)] 86 pub struct RuntimeDistributionEntry { 87 pub id: String, 88 pub distribution_state: String, 89 pub release_unit: String, 90 pub package_name: String, 91 pub binary_name: Option<String>, 92 pub artifact_adapter: String, 93 pub target_set: Option<String>, 94 pub default_channel: String, 95 pub human_installable: bool, 96 pub notes: Option<String>, 97 }