Experiment with futures
This commit is contained in:
parent
907fbf95db
commit
2d3e3688fa
44 changed files with 2081 additions and 1242 deletions
|
|
@ -1,5 +1,6 @@
|
|||
use crate::command_runner::CommandRunner;
|
||||
use crate::symbols::Symbol;
|
||||
use async_trait::async_trait;
|
||||
use std::error::Error;
|
||||
|
||||
#[derive(Debug)]
|
||||
|
|
@ -17,11 +18,13 @@ impl<U, C> User<U, C> {
|
|||
}
|
||||
}
|
||||
|
||||
#[async_trait(?Send)]
|
||||
impl<U: AsRef<str>, C: CommandRunner> Symbol for User<U, C> {
|
||||
fn target_reached(&self) -> Result<bool, Box<dyn Error>> {
|
||||
async fn target_reached(&self) -> Result<bool, Box<dyn Error>> {
|
||||
let output = self
|
||||
.command_runner
|
||||
.run_with_args("getent", args!["passwd", self.user_name.as_ref()])?;
|
||||
.run_with_args("getent", args!["passwd", self.user_name.as_ref()])
|
||||
.await?;
|
||||
match output.status.code() {
|
||||
Some(2) => Ok(false),
|
||||
Some(0) => Ok(true),
|
||||
|
|
@ -29,21 +32,24 @@ impl<U: AsRef<str>, C: CommandRunner> Symbol for User<U, C> {
|
|||
}
|
||||
}
|
||||
|
||||
fn execute(&self) -> Result<(), Box<dyn Error>> {
|
||||
self.command_runner.run_successfully(
|
||||
"adduser",
|
||||
args![
|
||||
// "-m", // Necessary for Fedora, not accepted in Debian
|
||||
"--system",
|
||||
self.user_name.as_ref(),
|
||||
],
|
||||
)?;
|
||||
Ok(())
|
||||
async fn execute(&self) -> Result<(), Box<dyn Error>> {
|
||||
self
|
||||
.command_runner
|
||||
.run_successfully(
|
||||
"adduser",
|
||||
args![
|
||||
// "-m", // Necessary for Fedora, not accepted in Debian
|
||||
"--system",
|
||||
self.user_name.as_ref(),
|
||||
],
|
||||
)
|
||||
.await
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::async_utils::run;
|
||||
use crate::command_runner::StdCommandRunner;
|
||||
use crate::symbols::user::User;
|
||||
use crate::symbols::Symbol;
|
||||
|
|
@ -54,7 +60,7 @@ mod test {
|
|||
user_name: "nonexisting",
|
||||
command_runner: StdCommandRunner,
|
||||
};
|
||||
assert_eq!(symbol.target_reached().unwrap(), false);
|
||||
assert_eq!(run(symbol.target_reached()).unwrap(), false);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -63,6 +69,6 @@ mod test {
|
|||
user_name: "root",
|
||||
command_runner: StdCommandRunner,
|
||||
};
|
||||
assert_eq!(symbol.target_reached().unwrap(), true);
|
||||
assert_eq!(run(symbol.target_reached()).unwrap(), true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue