Skip to main content

forge_kit/
types.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value as JsonValue;
3use std::path::PathBuf;
4
5#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
6pub struct Function {
7    pub name: String,
8    pub version: JsonValue,
9    pub description: String,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub brackets: Option<bool>,
12    pub unwrap: bool,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub args: Option<Vec<Arg>>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub output: Option<Vec<String>>,
17    pub category: Option<String>,
18    pub aliases: Option<Vec<String>>,
19    pub experimental: Option<bool>,
20    pub examples: Option<Vec<String>>,
21    pub deprecated: Option<bool>,
22    #[serde(skip)]
23    pub extension: Option<String>,
24    #[serde(skip)]
25    pub source_url: Option<String>,
26    #[serde(skip)]
27    pub local_path: Option<PathBuf>,
28    #[serde(skip)]
29    pub line: Option<u32>,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
33pub struct Arg {
34    pub name: String,
35    pub description: String,
36    #[serde(default)]
37    pub rest: bool,
38    pub required: Option<bool>,
39    pub arg_type: JsonValue,
40    pub condition: Option<bool>,
41    pub arg_enum: Option<Vec<String>>,
42    pub enum_name: Option<String>,
43    pub pointer: Option<i64>,
44    pub pointer_property: Option<String>,
45}
46
47/// Event definition
48#[derive(Debug, Clone, Serialize, Deserialize)]
49pub struct Event {
50    pub name: String,
51    #[serde(default)]
52    pub description: String,
53    #[serde(default)]
54    pub fields: Option<Vec<EventField>>,
55}
56
57#[derive(Debug, Clone, Serialize, Deserialize)]
58pub struct EventField {
59    pub name: String,
60    #[serde(default)]
61    pub description: String,
62}