anodizer_core/config/cloudsmith.rs
1use std::collections::HashMap;
2
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6use super::{StringOrBool, deserialize_string_or_bool_opt};
7
8// ---------------------------------------------------------------------------
9// CloudSmith publisher
10// ---------------------------------------------------------------------------
11
12/// CloudSmith publisher configuration.
13/// Pushes packages to CloudSmith repositories.
14#[derive(Debug, Clone, Serialize, Deserialize, Default, JsonSchema)]
15#[serde(default)]
16pub struct CloudSmithConfig {
17 /// CloudSmith organization slug.
18 pub organization: Option<String>,
19 /// CloudSmith repository slug.
20 pub repository: Option<String>,
21 /// Build IDs filter: only publish artifacts from builds whose `id` is in this list.
22 pub ids: Option<Vec<String>>,
23 /// Package format filter: only publish artifacts matching these formats.
24 pub formats: Option<Vec<String>>,
25 /// Distribution mapping per format (e.g. `deb: "ubuntu/focal"`).
26 pub distributions: Option<HashMap<String, serde_json::Value>>,
27 /// Debian component name (e.g. "main").
28 pub component: Option<String>,
29 /// Environment variable name containing the CloudSmith API key.
30 pub secret_name: Option<String>,
31 /// Template-conditional skip: if rendered result is `"true"`, skip this publisher.
32 #[serde(deserialize_with = "deserialize_string_or_bool_opt", default)]
33 pub skip: Option<StringOrBool>,
34 /// When true, allow republishing over existing package versions.
35 #[serde(deserialize_with = "deserialize_string_or_bool_opt", default)]
36 pub republish: Option<StringOrBool>,
37}