Skip to main content

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}