pub struct P4Cli { /* private fields */ }Implementations§
Source§impl P4Cli
impl P4Cli
Sourcepub fn new(bin: impl Into<PathBuf>, global_opts: GlobalOpts) -> Self
pub fn new(bin: impl Into<PathBuf>, global_opts: GlobalOpts) -> Self
Create a new Perforce command-line client.
bin is the path to the Perforce command-line executable.
Sourcepub fn global_opts(self, global_opts: GlobalOpts) -> Self
pub fn global_opts(self, global_opts: GlobalOpts) -> Self
Set the global options.
Sourcepub fn get_global_opts(&self) -> &GlobalOpts
pub fn get_global_opts(&self) -> &GlobalOpts
Get the global options.
Sourcepub fn set_global_opts(&mut self, global_opts: GlobalOpts)
pub fn set_global_opts(&mut self, global_opts: GlobalOpts)
Set the global options.
Sourcepub fn admin(&self) -> AdminEntry
pub fn admin(&self) -> AdminEntry
Perform administrative operations on the server.
Sourcepub fn aliases(&self) -> Aliases
pub fn aliases(&self) -> Aliases
Display command aliases that are currently defined in a .p4aliases file.
Sourcepub fn bgtask(&self) -> BackGroundTask
pub fn bgtask(&self) -> BackGroundTask
Run a background command or trigger on the server.
The returned builder starts with no task target; call
BackGroundTask::execute (-e) or BackGroundTask::trigger
(-t) to select the required target before spawning.
Sourcepub fn cachepurge(&self) -> CachePurge
pub fn cachepurge(&self) -> CachePurge
Reclaim disk space on a replicated server.
The returned builder starts with no purge goal and has no effect;
call CachePurge::purge_all (-a), CachePurge::free_space
(-f), CachePurge::revision_count (-m), or
CachePurge::size (-s) to select the required goal before
spawning.
Sourcepub fn clean(&self) -> Clean
pub fn clean(&self) -> Clean
Restore client workspace files to match the state of corresponding depot files.
Without file arguments, the files in your local working directory are
used; pass file arguments to
ParameterizedSpawn::spawn_with
to limit the scope.
Sourcepub fn client(&self) -> Client
pub fn client(&self) -> Client
Create or edit a client workspace specification and its view.
The returned builder starts in the GeneralMode
state (p4 client [-f] [-t template] [-T type] [name]); call
transition methods such as Client::delete
or Client::stdout to select
another syntax form.
Sourcepub fn workspace(&self) -> Client
pub fn workspace(&self) -> Client
Create or edit a client workspace specification and its view.
This is an alias for Self::client, corresponding to the p4 workspace command.
Sourcepub fn changelist(&self) -> Change
pub fn changelist(&self) -> Change
Create or edit a changelist specification.
This is an alias for Self::change, corresponding to the p4 changelist command.
Sourcepub fn changelists(&self) -> Changes
pub fn changelists(&self) -> Changes
List submitted and pending changelists.
This is an alias for Self::changes, corresponding to the p4 changelists command.
Sourcepub fn diff(&self) -> Diff
pub fn diff(&self) -> Diff
Diff workspace content against depot content, or diff stream specs.
Examples found in repository?
37fn main() -> std::io::Result<()> {
38 let p4 = P4Cli::default();
39
40 // Workspace mode: force a diff against head, use the unified format with
41 // whitespace-insensitive comparison, and limit output to the first 10
42 // files. `force(true)` transitions the command into `WorkspaceMode`, and
43 // `limit(10)` further transitions it into `WorkspaceRegularMode` (where
44 // `-soptions` is unavailable).
45 let mut diff = p4
46 .diff()
47 .force(true)
48 .diff_options(DiffOptionsBuilder::unified(None).ignore_all_whitespace())
49 .limit(10);
50
51 let files = [OsStr::new("//depot/project/src/...")];
52 let output = diff.output_with((&files,))?;
53 println!("{}", String::from_utf8_lossy(&output.stdout));
54
55 // Display mode: instead of full diffs, list only the unopened files that
56 // differ from the depot. `display_options` transitions `WorkspaceMode`
57 // into `WorkspaceDisplayMode`, where `-m max` is unavailable.
58 let mut list_changed = p4
59 .diff()
60 .force(true)
61 .display_options(DisplayOptions::UnopenedChanged);
62
63 let output = list_changed.output(files)?;
64 println!("{}", String::from_utf8_lossy(&output.stdout));
65
66 // Stream-spec mode: diff a privately edited stream spec against the head
67 // version of another stream. `stream_spec_mode` transitions the command
68 // into `StreamSpecMode`; the stream spec is passed to `spawn_with`.
69 #[cfg(not(feature = "lt2019_1"))]
70 {
71 let mut stream_diff = p4.diff().stream_spec_mode();
72 let mut child = stream_diff.spawn_with(("//streams/main@head",))?;
73 child.wait()?;
74 }
75
76 Ok(())
77}Sourcepub fn diff2(&self) -> Diff2
pub fn diff2(&self) -> Diff2
Compare the content at two depot paths, or compare two stream specs.
Sourcepub fn filelog(&self) -> FileLog
pub fn filelog(&self) -> FileLog
Print detailed information about the revisions of files.
Examples found in repository?
24fn main() -> std::io::Result<()> {
25 let p4 = P4Cli::default();
26
27 // Revision history for every file under //depot/project: follow the file
28 // history across branches (`-i`), display the time as well as the date
29 // (`-t`), and list only the first 10 changes per file (`-m 10`).
30 let mut filelog = p4
31 .filelog()
32 .follow_branches(true)
33 .include_time(true)
34 .limit(10);
35
36 let files = [OsStr::new("//depot/project/...")];
37 let output = filelog.output(&files)?;
38 println!("{}", String::from_utf8_lossy(&output.stdout));
39
40 // Long output: `full_description()` transitions the command into the
41 // `FullDescription` state (`-l`), printing the full text of each
42 // changelist description. A revision range limits the listed revisions,
43 // e.g. changelists 100 through 120.
44 let mut long_log = p4.filelog().full_description();
45
46 let output = long_log.output(&["//depot/project/main.c@100,@120"])?;
47 println!("{}", String::from_utf8_lossy(&output.stdout));
48
49 // Content history: `content_history()` transitions the command into the
50 // `DisplayContentHistory` state (`-h`), which unlocks `-p` to skip the
51 // content of promoted task streams. Only revisions submitted at
52 // changelist 4321 are displayed (`-c 4321`).
53 let mut history = p4
54 .filelog()
55 .content_history()
56 .skip_promoted_tasks(true)
57 .changelist("4321");
58
59 let mut child = history.spawn_with((&files,))?;
60 child.wait()?;
61
62 Ok(())
63}Sourcepub fn print(&self) -> Print
pub fn print(&self) -> Print
Print the contents of depot file revisions.
Examples found in repository?
15fn main() -> std::io::Result<()> {
16 let p4 = P4Cli::default();
17
18 // Chain builders: print all revisions of the first two matching files to
19 // a local output file, without the depot header line.
20 let mut print = p4
21 .print()
22 .all_revisions(true)
23 .quiet_mode(true)
24 .limit(2)
25 .redirect_output("print-output.txt");
26
27 // Run the command to completion and capture its output.
28 let file = Path::new("//depot/project/README.md");
29 let output = print.output_with((&[file.as_os_str()],))?;
30 println!("{}", String::from_utf8_lossy(&output.stdout));
31
32 // Or stream the contents directly to the terminal with `spawn_with`.
33 let mut child = p4
34 .print()
35 .spawn_with((&[OsStr::new("//depot/project/README.md")],))?;
36 child.wait()?;
37
38 Ok(())
39}