mindcontrol_types 0.21.0

Mind Control types
Documentation
use serde::{Deserialize, Serialize};
use litty::literal;
use std::collections::BTreeMap;

/// Collection package.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum Package {
    PackageNpm(PackageNpm),
    PackagePip(PackagePip),
}

/// npm package.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackageNpm {
    /// Package type.
    pub r#type: PackageNpmTypeNpm,
    /// Package name.
    pub name: String,
    /// Package version.
    pub version: String,
    /// SHA1 checksum.
    pub shasum: String,
    /// Tarball URL.
    pub tarball: String,
    /// Tag name.
    pub tag: String,
    /// Unix timestamp in milliseconds.
    pub time: i64,
    /// Package dependencies.
    pub dependencies: PackageNpmDependencies,
}

#[literal("npm")]
pub struct PackageNpmTypeNpm;

/// npm package dependencies.
pub type PackageNpmDependencies = BTreeMap<String, String>;

/// Pip package.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackagePip {
    /// Package type.
    pub r#type: PackagePipTypePip,
    /// Package name.
    pub name: String,
    /// Package version.
    pub version: String,
    /// SHA-256 checksum.
    pub sha256: String,
    /// Wheel file URL.
    pub wheel: String,
}

#[literal("pip")]
pub struct PackagePipTypePip;

/// Package settings.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackagesSettings {
    /// Npm package settings.
    pub npm: Option<PackageNpmSettings>,
    /// Pip package settings.
    pub pip: Option<PackagePipSettings>,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackageBaseSettings {
    /// If the package is enabled. Toggling this setting does not trigger
    /// major version bump.
    pub enabled: Option<bool>,
    /// Transfor case setting. Changing this setting triggers major version
    /// bump.
    #[serde(rename = "transformCase")]
    pub transform_case: Option<PackageSettingTransformCase>,
    /// Use prerelease client version. Changing this setting triggers major version
    /// bump.
    #[serde(rename = "clientPrerelease")]
    pub client_prerelease: Option<bool>,
}

/// Transform case setting.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum PackageSettingTransformCase {
    Never(PackageSettingTransformCaseNever),
    Shallow(PackageSettingTransformCaseShallow),
    Everything(PackageSettingTransformCaseEverything),
}

#[literal("never")]
pub struct PackageSettingTransformCaseNever;

#[literal("shallow")]
pub struct PackageSettingTransformCaseShallow;

#[literal("everything")]
pub struct PackageSettingTransformCaseEverything;

/// Npm package settings.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackageNpmSettings {
    /// If the package is enabled. Toggling this setting does not trigger
    /// major version bump.
    pub enabled: Option<bool>,
    /// Transfor case setting. Changing this setting triggers major version
    /// bump.
    #[serde(rename = "transformCase")]
    pub transform_case: Option<PackageSettingTransformCase>,
    /// Use prerelease client version. Changing this setting triggers major version
    /// bump.
    #[serde(rename = "clientPrerelease")]
    pub client_prerelease: Option<bool>,
    /// Npm package client version. Changing the client version triggers major
    /// version bump.
    #[serde(rename = "clientVersion")]
    pub client_version: Option<PackageNpmClientVersion>,
}

/// Npm package client version.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum PackageNpmClientVersion {
    Lit0(PackageNpmClientVersion0),
    Lit1(PackageNpmClientVersion1),
}

#[literal(0)]
pub struct PackageNpmClientVersion0;

#[literal(1)]
pub struct PackageNpmClientVersion1;

/// Pip package settings.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackagePipSettings {
    /// If the package is enabled. Toggling this setting does not trigger
    /// major version bump.
    pub enabled: Option<bool>,
    /// Transfor case setting. Changing this setting triggers major version
    /// bump.
    #[serde(rename = "transformCase")]
    pub transform_case: Option<PackageSettingTransformCase>,
    /// Use prerelease client version. Changing this setting triggers major version
    /// bump.
    #[serde(rename = "clientPrerelease")]
    pub client_prerelease: Option<bool>,
    /// Pip package client version. Changing the client version triggers major
    /// version bump.
    #[serde(rename = "clientVersion")]
    pub client_version: Option<PackagePipClientVersion>,
}

/// Pip package client version.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum PackagePipClientVersion {
    Lit0(PackagePipClientVersion0),
    Lit1(PackagePipClientVersion1),
}

#[literal(0)]
pub struct PackagePipClientVersion0;

#[literal(1)]
pub struct PackagePipClientVersion1;

/// Status of the package.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum PackageStatus {
    Pending(PackageStatusPending),
    Building(PackageStatusBuilding),
    Errored(PackageStatusErrored),
    Published(PackageStatusPublished),
}

#[literal("pending")]
pub struct PackageStatusPending;

#[literal("building")]
pub struct PackageStatusBuilding;

#[literal("errored")]
pub struct PackageStatusErrored;

#[literal("published")]
pub struct PackageStatusPublished;

/// Package trigger message.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackageTrigger {
    /// Package id.
    pub id: u32,
}