Skip to main content

cargo_codesign/config/
mod.rs

1pub mod resolve;
2
3use serde::Deserialize;
4use std::path::PathBuf;
5
6#[derive(Debug, Deserialize, Default)]
7#[serde(deny_unknown_fields)]
8pub struct SignConfig {
9    pub macos: Option<MacosConfig>,
10    pub windows: Option<WindowsConfig>,
11    pub linux: Option<LinuxConfig>,
12    pub update: Option<UpdateConfig>,
13    pub status: Option<StatusConfig>,
14}
15
16// --- macOS ---
17
18#[derive(Debug, Deserialize, PartialEq, Eq)]
19#[serde(rename_all = "kebab-case")]
20pub enum MacosAuth {
21    ApiKey,
22    AppleId,
23}
24
25#[derive(Debug, Deserialize)]
26#[serde(deny_unknown_fields)]
27pub struct MacosConfig {
28    pub identity: Option<String>,
29    pub entitlements: Option<PathBuf>,
30    pub auth: MacosAuth,
31    pub env: MacosEnvConfig,
32    pub dmg: Option<DmgConfig>,
33}
34
35#[derive(Debug, Deserialize)]
36#[serde(deny_unknown_fields, rename_all = "kebab-case")]
37pub struct DmgConfig {
38    pub background: PathBuf,
39    pub window_size: [u32; 2],
40    pub icon_size: u32,
41    pub app_position: [u32; 2],
42    pub app_drop_link: [u32; 2],
43}
44
45#[derive(Debug, Deserialize, Default)]
46#[serde(deny_unknown_fields, rename_all = "kebab-case")]
47pub struct MacosEnvConfig {
48    // api-key mode
49    pub certificate: Option<String>,
50    pub certificate_password: Option<String>,
51    pub notarization_key: Option<String>,
52    pub notarization_key_id: Option<String>,
53    pub notarization_issuer: Option<String>,
54    // apple-id mode
55    pub apple_id: Option<String>,
56    pub team_id: Option<String>,
57    pub app_password: Option<String>,
58}
59
60// --- Windows ---
61
62#[derive(Debug, Deserialize)]
63#[serde(deny_unknown_fields, rename_all = "kebab-case")]
64pub struct WindowsConfig {
65    pub timestamp_server: Option<String>,
66    pub env: WindowsEnvConfig,
67}
68
69#[derive(Debug, Deserialize, Default)]
70#[serde(deny_unknown_fields, rename_all = "kebab-case")]
71pub struct WindowsEnvConfig {
72    pub tenant_id: Option<String>,
73    pub client_id: Option<String>,
74    pub client_secret: Option<String>,
75    pub endpoint: Option<String>,
76    pub account_name: Option<String>,
77    pub cert_profile: Option<String>,
78}
79
80// --- Linux ---
81
82#[derive(Debug, Clone, Copy, Deserialize, PartialEq, Eq)]
83#[serde(rename_all = "lowercase")]
84pub enum LinuxMethod {
85    Cosign,
86    Minisign,
87    Gpg,
88}
89
90#[derive(Debug, Deserialize)]
91#[serde(deny_unknown_fields)]
92pub struct LinuxConfig {
93    pub method: LinuxMethod,
94    pub env: LinuxEnvConfig,
95}
96
97#[derive(Debug, Deserialize, Default)]
98#[serde(deny_unknown_fields)]
99pub struct LinuxEnvConfig {
100    pub key: Option<String>,
101}
102
103// --- Update signing ---
104
105#[derive(Debug, Deserialize)]
106#[serde(deny_unknown_fields, rename_all = "kebab-case")]
107pub struct UpdateConfig {
108    pub public_key: Option<PathBuf>,
109    pub env: UpdateEnvConfig,
110}
111
112#[derive(Debug, Deserialize, Default)]
113#[serde(deny_unknown_fields, rename_all = "kebab-case")]
114pub struct UpdateEnvConfig {
115    pub signing_key: Option<String>,
116}
117
118// --- Status ---
119
120#[derive(Debug, Deserialize)]
121#[serde(deny_unknown_fields, rename_all = "kebab-case")]
122pub struct StatusConfig {
123    pub cert_warn_days: Option<u32>,
124    pub cert_error_days: Option<u32>,
125}