moon_task/
task_options.rs1use moon_common::cacheable;
2use moon_config::{
3 Input, TaskMergeStrategy, TaskOperatingSystem, TaskOptionAffectedFilesPattern, TaskOptionCache,
4 TaskOptionRunInCI, TaskOutputStyle, TaskPriority, TaskUnixShell, TaskWindowsShell,
5};
6
7cacheable!(
8 #[derive(Clone, Debug, Default, Eq, PartialEq)]
9 #[serde(default)]
10 pub struct TaskOptionAffectedFiles {
11 pub pass: TaskOptionAffectedFilesPattern,
12 pub pass_inputs_when_no_match: bool,
13 }
14);
15
16cacheable!(
17 #[derive(Clone, Debug, Eq, PartialEq)]
18 #[serde(default)]
19 pub struct TaskOptions {
20 #[serde(skip_serializing_if = "Option::is_none")]
21 pub affected_files: Option<TaskOptionAffectedFiles>,
22
23 pub allow_failure: bool,
24
25 pub cache: TaskOptionCache,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
28 pub cache_key: Option<String>,
29
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub cache_lifetime: Option<String>,
32
33 #[serde(skip_serializing_if = "Option::is_none")]
34 pub env_files: Option<Vec<Input>>,
35
36 pub infer_inputs: bool,
37
38 pub internal: bool,
39
40 pub interactive: bool,
41
42 pub merge_args: TaskMergeStrategy,
43
44 pub merge_deps: TaskMergeStrategy,
45
46 pub merge_env: TaskMergeStrategy,
47
48 pub merge_inputs: TaskMergeStrategy,
49
50 pub merge_outputs: TaskMergeStrategy,
51
52 pub merge_toolchains: TaskMergeStrategy,
53
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub mutex: Option<String>,
56
57 #[serde(skip_serializing_if = "Option::is_none")]
58 pub os: Option<Vec<TaskOperatingSystem>>,
59
60 #[serde(skip_serializing_if = "Option::is_none")]
61 pub output_style: Option<TaskOutputStyle>,
62
63 pub persistent: bool,
64
65 pub priority: TaskPriority,
66
67 pub retry_count: u8,
68
69 pub run_deps_in_parallel: bool,
70
71 #[serde(rename = "runInCI")]
72 pub run_in_ci: TaskOptionRunInCI,
73
74 pub run_from_workspace_root: bool,
75
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub shell: Option<bool>,
78
79 #[serde(skip_serializing_if = "Option::is_none")]
80 pub timeout: Option<u64>,
81
82 pub unix_shell: TaskUnixShell,
83
84 pub windows_shell: TaskWindowsShell,
85 }
86);
87
88impl Default for TaskOptions {
89 fn default() -> Self {
90 TaskOptions {
91 affected_files: None,
92 allow_failure: false,
93 cache: TaskOptionCache::Enabled(true),
94 cache_key: None,
95 cache_lifetime: None,
96 env_files: None,
97 infer_inputs: false,
98 internal: false,
99 interactive: false,
100 merge_args: TaskMergeStrategy::Append,
101 merge_deps: TaskMergeStrategy::Append,
102 merge_env: TaskMergeStrategy::Append,
103 merge_inputs: TaskMergeStrategy::Append,
104 merge_outputs: TaskMergeStrategy::Append,
105 merge_toolchains: TaskMergeStrategy::Append,
106 mutex: None,
107 os: None,
108 output_style: None,
109 persistent: false,
110 priority: TaskPriority::Normal,
111 retry_count: 0,
112 run_deps_in_parallel: true,
113 run_from_workspace_root: false,
114 run_in_ci: TaskOptionRunInCI::Enabled(true),
115 shell: Some(true),
116 timeout: None,
117 unix_shell: TaskUnixShell::Bash,
118 windows_shell: TaskWindowsShell::Pwsh,
119 }
120 }
121}