1use derive_setters::Setters;
5use serde::{Deserialize, Serialize};
6
7use crate::concurrency::Concurrency;
8
9#[derive(Debug, Setters, Serialize, Deserialize, Clone, Default, PartialEq, Eq)]
11#[serde(rename_all = "kebab-case")]
12#[setters(strip_option, into)]
13pub struct Defaults {
14 #[serde(skip_serializing_if = "Option::is_none")]
16 pub run: Option<RunDefaults>,
17
18 #[serde(skip_serializing_if = "Option::is_none")]
20 pub retry: Option<RetryDefaults>,
21
22 #[serde(skip_serializing_if = "Option::is_none")]
24 pub concurrency: Option<Concurrency>,
25}
26
27#[derive(Debug, Setters, Serialize, Deserialize, Clone, Default, PartialEq, Eq)]
29#[serde(rename_all = "kebab-case")]
30#[setters(strip_option, into)]
31pub struct RunDefaults {
32 #[serde(skip_serializing_if = "Option::is_none")]
34 pub shell: Option<String>,
35
36 #[serde(skip_serializing_if = "Option::is_none")]
38 pub working_directory: Option<String>,
39}
40
41#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq)]
43#[serde(rename_all = "kebab-case")]
44pub struct RetryDefaults {
45 #[serde(skip_serializing_if = "Option::is_none")]
47 pub max_attempts: Option<u32>,
48}
49
50#[derive(Debug, Serialize, Deserialize, Clone, Default, PartialEq, Eq)]
52#[serde(rename_all = "kebab-case")]
53pub struct RetryStrategy {
54 #[serde(skip_serializing_if = "Option::is_none")]
56 pub max_attempts: Option<u32>,
57}