use serde::{Deserialize, Serialize};
use litty::literal;
use std::collections::BTreeMap;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum Package {
PackageNpm(PackageNpm),
PackagePip(PackagePip),
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackageNpm {
pub r#type: PackageNpmTypeNpm,
pub name: String,
pub version: String,
pub shasum: String,
pub tarball: String,
pub tag: String,
pub time: i64,
pub dependencies: PackageNpmDependencies,
}
#[literal("npm")]
pub struct PackageNpmTypeNpm;
pub type PackageNpmDependencies = BTreeMap<String, String>;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackagePip {
pub r#type: PackagePipTypePip,
pub name: String,
pub version: String,
pub sha256: String,
pub wheel: String,
}
#[literal("pip")]
pub struct PackagePipTypePip;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackagesSettings {
pub npm: Option<PackageNpmSettings>,
pub pip: Option<PackagePipSettings>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackageBaseSettings {
pub enabled: Option<bool>,
#[serde(rename = "transformCase")]
pub transform_case: Option<PackageSettingTransformCase>,
#[serde(rename = "clientPrerelease")]
pub client_prerelease: Option<bool>,
}
#[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;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackageNpmSettings {
pub enabled: Option<bool>,
#[serde(rename = "transformCase")]
pub transform_case: Option<PackageSettingTransformCase>,
#[serde(rename = "clientPrerelease")]
pub client_prerelease: Option<bool>,
#[serde(rename = "clientVersion")]
pub client_version: Option<PackageNpmClientVersion>,
}
#[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;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackagePipSettings {
pub enabled: Option<bool>,
#[serde(rename = "transformCase")]
pub transform_case: Option<PackageSettingTransformCase>,
#[serde(rename = "clientPrerelease")]
pub client_prerelease: Option<bool>,
#[serde(rename = "clientVersion")]
pub client_version: Option<PackagePipClientVersion>,
}
#[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;
#[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;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PackageTrigger {
pub id: u32,
}