src : la première commande de CommandSequence
n'est plus optionnelle
This commit is contained in:
parent
3a2e788c3c
commit
7ffbc9a608
2 changed files with 8 additions and 17 deletions
|
@ -23,14 +23,14 @@ pub trait Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct CommandSequence {
|
pub struct CommandSequence {
|
||||||
command: Option<Box<dyn Command>>,
|
command: Box<dyn Command>,
|
||||||
next_command: Option<Box<dyn Command>>,
|
next_command: Option<Box<dyn Command>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl CommandSequence {
|
impl CommandSequence {
|
||||||
pub fn new() -> Self {
|
pub fn new(command: impl Command + 'static) -> Self {
|
||||||
Self {
|
Self {
|
||||||
command: None,
|
command: Box::new(command),
|
||||||
next_command: None,
|
next_command: None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,11 +47,7 @@ impl CommandSequence {
|
||||||
|
|
||||||
impl Command for CommandSequence {
|
impl Command for CommandSequence {
|
||||||
fn spawn(&self) -> ExitCode {
|
fn spawn(&self) -> ExitCode {
|
||||||
let mut exit_code = ExitCode::new(0);
|
let mut exit_code = self.command.spawn();
|
||||||
|
|
||||||
if self.command.is_some() {
|
|
||||||
exit_code = self.command.as_ref().unwrap().spawn();
|
|
||||||
}
|
|
||||||
|
|
||||||
if self.next_command.is_some() {
|
if self.next_command.is_some() {
|
||||||
exit_code = self.next_command.as_ref().unwrap().spawn();
|
exit_code = self.next_command.as_ref().unwrap().spawn();
|
||||||
|
@ -66,13 +62,8 @@ pub struct UnixProgram {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl UnixProgram {
|
impl UnixProgram {
|
||||||
pub fn new() -> Self {
|
pub fn new(argv: Vec<String>) -> Self {
|
||||||
Self { argv: Vec::new() }
|
Self { argv }
|
||||||
}
|
|
||||||
|
|
||||||
pub fn argv(&mut self, argv: Vec<String>) -> &mut Self {
|
|
||||||
self.argv = argv;
|
|
||||||
self
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,8 @@ pub fn parse_command_line(line: String) -> Option<CommandSequence> {
|
||||||
let argv: Vec<String> = line.split_whitespace().map(|s| s.to_string()).collect();
|
let argv: Vec<String> = line.split_whitespace().map(|s| s.to_string()).collect();
|
||||||
|
|
||||||
if !argv.is_empty() {
|
if !argv.is_empty() {
|
||||||
let _command = UnixProgram::new().argv(argv);
|
let command = UnixProgram::new(argv);
|
||||||
let command_sequence = CommandSequence::new();
|
let command_sequence = CommandSequence::new(command);
|
||||||
// command_sequence.add(_command);
|
// command_sequence.add(_command);
|
||||||
Some(command_sequence)
|
Some(command_sequence)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue