canon_protocol/
specification.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize)]
4pub struct CanonSpecification {
5    pub canon: String,
6    pub r#type: String,
7    pub name: String,
8    pub version: String,
9    pub metadata: Option<SpecificationMetadata>,
10    pub sources: Option<Vec<SourceDefinition>>,
11    pub transformations: Option<Vec<String>>,
12    pub output: Option<OutputConfiguration>,
13}
14
15#[derive(Debug, Serialize, Deserialize)]
16pub struct SpecificationMetadata {
17    pub description: Option<String>,
18    pub author: Option<String>,
19    pub license: Option<String>,
20    pub tags: Option<Vec<String>>,
21}
22
23#[derive(Debug, Serialize, Deserialize)]
24pub struct SourceDefinition {
25    pub path: String,
26    pub r#type: String,
27    pub include: Option<Vec<String>>,
28    pub exclude: Option<Vec<String>>,
29}
30
31#[derive(Debug, Serialize, Deserialize)]
32pub struct OutputConfiguration {
33    pub artifacts: Option<Vec<String>>,
34    pub directory: Option<String>,
35}