lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

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 }