Wrap std Output in CommandOutput

This commit is contained in:
Jakub Beránek 2024-06-22 09:18:58 +02:00
parent 3fe4d134dd
commit 250586cb2e
No known key found for this signature in database
GPG key ID: 909CD0D26483516B

View file

@ -62,16 +62,11 @@ fn from(command: &'a mut Command) -> Self {
/// Represents the output of an executed process.
#[allow(unused)]
#[derive(Default)]
pub struct CommandOutput {
status: ExitStatus,
stdout: Vec<u8>,
stderr: Vec<u8>,
}
pub struct CommandOutput(Output);
impl CommandOutput {
pub fn is_success(&self) -> bool {
self.status.success()
self.0.status.success()
}
pub fn is_failure(&self) -> bool {
@ -79,26 +74,32 @@ pub fn is_failure(&self) -> bool {
}
pub fn status(&self) -> ExitStatus {
self.status
self.0.status
}
pub fn stdout(&self) -> String {
String::from_utf8(self.stdout.clone()).expect("Cannot parse process stdout as UTF-8")
String::from_utf8(self.0.stdout.clone()).expect("Cannot parse process stdout as UTF-8")
}
pub fn stderr(&self) -> String {
String::from_utf8(self.stderr.clone()).expect("Cannot parse process stderr as UTF-8")
String::from_utf8(self.0.stderr.clone()).expect("Cannot parse process stderr as UTF-8")
}
}
impl Default for CommandOutput {
fn default() -> Self {
Self(Output { status: Default::default(), stdout: vec![], stderr: vec![] })
}
}
impl From<Output> for CommandOutput {
fn from(output: Output) -> Self {
Self { status: output.status, stdout: output.stdout, stderr: output.stderr }
Self(output)
}
}
impl From<ExitStatus> for CommandOutput {
fn from(status: ExitStatus) -> Self {
Self { status, stdout: Default::default(), stderr: Default::default() }
Self(Output { status, stdout: vec![], stderr: vec![] })
}
}