Skip to main content

perforce_cli/cmd/change/
inout.rs

1#[cfg(not(feature = "lt2022_1"))]
2use super::IdentityChangeListMode;
3use super::{
4    ArbitraryJobStatus, Change, ForceOperationMode, OriginalChangeListMode, StdinMode, StdoutMode,
5    Unselected, UpdateOperationMode,
6};
7
8// ---------------------------------------------------------------------------
9// StdoutMode: `-f`, `-s`, `-O`, `-I` may still be selected
10// ---------------------------------------------------------------------------
11
12impl<O, C> Change<StdoutMode, O, C, Unselected> {
13    /// Selects `-s` in the stdout form.
14    pub fn arbitrary_job_status(self) -> Change<StdoutMode, O, C, ArbitraryJobStatus> {
15        Change {
16            bin: self.bin,
17            global_opts: self.global_opts,
18            mode: self.mode,
19            permission_mode: self.permission_mode,
20            changelist_mode: self.changelist_mode,
21            job_status_mode: ArbitraryJobStatus,
22        }
23    }
24}
25
26impl<C, S> Change<StdoutMode, Unselected, C, S> {
27    /// Selects `-f` in the stdout form.
28    pub fn force(self) -> Change<StdoutMode, ForceOperationMode, C, S> {
29        Change {
30            bin: self.bin,
31            global_opts: self.global_opts,
32            mode: self.mode,
33            permission_mode: ForceOperationMode,
34            changelist_mode: self.changelist_mode,
35            job_status_mode: self.job_status_mode,
36        }
37    }
38}
39
40impl<O, S> Change<StdoutMode, O, Unselected, S> {
41    /// Selects `-O` in the stdout form (reference by original changelist
42    /// number).
43    pub fn original(self) -> Change<StdoutMode, O, OriginalChangeListMode, S> {
44        Change {
45            bin: self.bin,
46            global_opts: self.global_opts,
47            mode: self.mode,
48            permission_mode: self.permission_mode,
49            changelist_mode: OriginalChangeListMode,
50            job_status_mode: self.job_status_mode,
51        }
52    }
53
54    /// Selects `-I` in the stdout form (reference by Identity field).
55    #[cfg(not(feature = "lt2022_1"))]
56    pub fn identity(self) -> Change<StdoutMode, O, IdentityChangeListMode, S> {
57        Change {
58            bin: self.bin,
59            global_opts: self.global_opts,
60            mode: self.mode,
61            permission_mode: self.permission_mode,
62            changelist_mode: IdentityChangeListMode,
63            job_status_mode: self.job_status_mode,
64        }
65    }
66}
67
68// ---------------------------------------------------------------------------
69// StdinMode: `-f`, `-u`, `-s` may still be selected
70// ---------------------------------------------------------------------------
71
72impl<O> Change<StdinMode, O, Unselected, Unselected> {
73    /// Selects `-s` in the stdin form.
74    pub fn arbitrary_job_status(self) -> Change<StdinMode, O, Unselected, ArbitraryJobStatus> {
75        Change {
76            bin: self.bin,
77            global_opts: self.global_opts,
78            mode: self.mode,
79            permission_mode: self.permission_mode,
80            changelist_mode: Unselected,
81            job_status_mode: ArbitraryJobStatus,
82        }
83    }
84}
85
86impl<S> Change<StdinMode, Unselected, Unselected, S> {
87    /// Selects `-f` in the stdin form.
88    pub fn force(self) -> Change<StdinMode, ForceOperationMode, Unselected, S> {
89        Change {
90            bin: self.bin,
91            global_opts: self.global_opts,
92            mode: self.mode,
93            permission_mode: ForceOperationMode,
94            changelist_mode: Unselected,
95            job_status_mode: self.job_status_mode,
96        }
97    }
98
99    /// Selects `-u` in the stdin form.
100    pub fn update(self) -> Change<StdinMode, UpdateOperationMode, Unselected, S> {
101        Change {
102            bin: self.bin,
103            global_opts: self.global_opts,
104            mode: self.mode,
105            permission_mode: UpdateOperationMode,
106            changelist_mode: Unselected,
107            job_status_mode: self.job_status_mode,
108        }
109    }
110}