canon_protocol/
specification.rs1use 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}