mindcontrol_types/
package.rs

1use serde::{Deserialize, Serialize};
2use litty::literal;
3use std::collections::BTreeMap;
4
5/// Collection package.
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7#[serde(untagged)]
8pub enum Package {
9    PackageNpm(PackageNpm),
10    PackagePip(PackagePip),
11}
12
13/// npm package.
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
15pub struct PackageNpm {
16    /// Package type.
17    pub r#type: PackageNpmTypeNpm,
18    /// Package name.
19    pub name: String,
20    /// Package version.
21    pub version: String,
22    /// SHA1 checksum.
23    pub shasum: String,
24    /// Tarball URL.
25    pub tarball: String,
26    /// Tag name.
27    pub tag: String,
28    /// Unix timestamp in milliseconds.
29    pub time: i64,
30    /// Package dependencies.
31    pub dependencies: PackageNpmDependencies,
32}
33
34#[literal("npm")]
35pub struct PackageNpmTypeNpm;
36
37/// npm package dependencies.
38pub type PackageNpmDependencies = BTreeMap<String, String>;
39
40/// Pip package.
41#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
42pub struct PackagePip {
43    /// Package type.
44    pub r#type: PackagePipTypePip,
45    /// Package name.
46    pub name: String,
47    /// Package version.
48    pub version: String,
49    /// SHA-256 checksum.
50    pub sha256: String,
51    /// Wheel file URL.
52    pub wheel: String,
53}
54
55#[literal("pip")]
56pub struct PackagePipTypePip;
57
58/// Package settings.
59#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
60pub struct PackagesSettings {
61    /// Npm package settings.
62    pub npm: Option<PackageNpmSettings>,
63    /// Pip package settings.
64    pub pip: Option<PackagePipSettings>,
65}
66
67#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
68pub struct PackageBaseSettings {
69    /// If the package is enabled. Toggling this setting does not trigger
70    /// major version bump.
71    pub enabled: Option<bool>,
72    /// Transfor case setting. Changing this setting triggers major version
73    /// bump.
74    #[serde(rename = "transformCase")]
75    pub transform_case: Option<PackageSettingTransformCase>,
76    /// Use prerelease client version. Changing this setting triggers major version
77    /// bump.
78    #[serde(rename = "clientPrerelease")]
79    pub client_prerelease: Option<bool>,
80}
81
82/// Transform case setting.
83#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
84#[serde(untagged)]
85pub enum PackageSettingTransformCase {
86    Never(PackageSettingTransformCaseNever),
87    Shallow(PackageSettingTransformCaseShallow),
88    Everything(PackageSettingTransformCaseEverything),
89}
90
91#[literal("never")]
92pub struct PackageSettingTransformCaseNever;
93
94#[literal("shallow")]
95pub struct PackageSettingTransformCaseShallow;
96
97#[literal("everything")]
98pub struct PackageSettingTransformCaseEverything;
99
100/// Npm package settings.
101#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
102pub struct PackageNpmSettings {
103    /// If the package is enabled. Toggling this setting does not trigger
104    /// major version bump.
105    pub enabled: Option<bool>,
106    /// Transfor case setting. Changing this setting triggers major version
107    /// bump.
108    #[serde(rename = "transformCase")]
109    pub transform_case: Option<PackageSettingTransformCase>,
110    /// Use prerelease client version. Changing this setting triggers major version
111    /// bump.
112    #[serde(rename = "clientPrerelease")]
113    pub client_prerelease: Option<bool>,
114    /// Npm package client version. Changing the client version triggers major
115    /// version bump.
116    #[serde(rename = "clientVersion")]
117    pub client_version: Option<PackageNpmClientVersion>,
118}
119
120/// Npm package client version.
121#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
122#[serde(untagged)]
123pub enum PackageNpmClientVersion {
124    Lit0(PackageNpmClientVersion0),
125    Lit1(PackageNpmClientVersion1),
126}
127
128#[literal(0)]
129pub struct PackageNpmClientVersion0;
130
131#[literal(1)]
132pub struct PackageNpmClientVersion1;
133
134/// Pip package settings.
135#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
136pub struct PackagePipSettings {
137    /// If the package is enabled. Toggling this setting does not trigger
138    /// major version bump.
139    pub enabled: Option<bool>,
140    /// Transfor case setting. Changing this setting triggers major version
141    /// bump.
142    #[serde(rename = "transformCase")]
143    pub transform_case: Option<PackageSettingTransformCase>,
144    /// Use prerelease client version. Changing this setting triggers major version
145    /// bump.
146    #[serde(rename = "clientPrerelease")]
147    pub client_prerelease: Option<bool>,
148    /// Pip package client version. Changing the client version triggers major
149    /// version bump.
150    #[serde(rename = "clientVersion")]
151    pub client_version: Option<PackagePipClientVersion>,
152}
153
154/// Pip package client version.
155#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
156#[serde(untagged)]
157pub enum PackagePipClientVersion {
158    Lit0(PackagePipClientVersion0),
159    Lit1(PackagePipClientVersion1),
160}
161
162#[literal(0)]
163pub struct PackagePipClientVersion0;
164
165#[literal(1)]
166pub struct PackagePipClientVersion1;
167
168/// Status of the package.
169#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
170#[serde(untagged)]
171pub enum PackageStatus {
172    Pending(PackageStatusPending),
173    Building(PackageStatusBuilding),
174    Errored(PackageStatusErrored),
175    Published(PackageStatusPublished),
176}
177
178#[literal("pending")]
179pub struct PackageStatusPending;
180
181#[literal("building")]
182pub struct PackageStatusBuilding;
183
184#[literal("errored")]
185pub struct PackageStatusErrored;
186
187#[literal("published")]
188pub struct PackageStatusPublished;
189
190/// Package trigger message.
191#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
192pub struct PackageTrigger {
193    /// Package id.
194    pub id: u32,
195}