refactor(meta-command): have execute be a member function

This commit is contained in:
Khaïs COLIN 2025-05-02 20:46:08 +02:00
parent ee23572983
commit 711d51090e
2 changed files with 15 additions and 4 deletions

View file

@ -1,19 +1,18 @@
use osdb::branding::startup_msg;
use osdb::cli::read_input;
use osdb::command::Command;
use osdb::meta_commands::MetaCommand;
fn main() {
startup_msg();
while let Some(input) = read_input() {
match input.parse() {
Ok(cmd) => match cmd {
Command::MetaCommand(cmd) => match cmd {
MetaCommand::Exit => {
Command::MetaCommand(cmd) => {
if cmd.execute().should_exit {
println!("Good-bye");
break;
}
},
}
Command::Statement(stmt) => stmt.execute(),
},
Err(err) => eprintln!("{err}"),

View file

@ -2,6 +2,18 @@ pub enum MetaCommand {
Exit,
}
pub struct MetaCommandExecuteResult {
pub should_exit: bool,
}
impl MetaCommand {
pub fn execute(&self) -> MetaCommandExecuteResult {
match self {
MetaCommand::Exit => MetaCommandExecuteResult { should_exit: true },
}
}
}
pub enum MetaCommandParseError {
Unrecognized { cmd: String },
}