Gestion des erreurs : erreur command not found
This commit is contained in:
parent
1554f17905
commit
62e34a9f46
3 changed files with 15 additions and 2 deletions
|
@ -2,6 +2,7 @@ use std::io as stdio;
|
||||||
use stdio::stdin;
|
use stdio::stdin;
|
||||||
use crate::parser;
|
use crate::parser;
|
||||||
use crate::job;
|
use crate::job;
|
||||||
|
use crate::error::command_not_found;
|
||||||
|
|
||||||
pub struct Buffer {
|
pub struct Buffer {
|
||||||
buffer: String,
|
buffer: String,
|
||||||
|
@ -34,6 +35,7 @@ impl Buffer {
|
||||||
pub fn try_spawn(&mut self) -> Option<i32> {
|
pub fn try_spawn(&mut self) -> Option<i32> {
|
||||||
if ! self.buffer.is_empty() {
|
if ! self.buffer.is_empty() {
|
||||||
self.argv = parser::parse(&self.buffer);
|
self.argv = parser::parse(&self.buffer);
|
||||||
|
let command_name = self.argv[0].to_string();
|
||||||
let result = job::execute(&mut self.argv);
|
let result = job::execute(&mut self.argv);
|
||||||
|
|
||||||
if result.is_ok() {
|
if result.is_ok() {
|
||||||
|
@ -43,8 +45,7 @@ impl Buffer {
|
||||||
return Some(result.code().unwrap());
|
return Some(result.code().unwrap());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
eprintln!("{}", result.unwrap_err());
|
return Some(command_not_found(&command_name));
|
||||||
return Some(127);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
11
src/error.rs
Normal file
11
src/error.rs
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
use std::env;
|
||||||
|
|
||||||
|
fn error(message: &str) {
|
||||||
|
eprintln!("{}: {}", env::args().next().unwrap(), message);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn command_not_found(command: &String) -> i32 {
|
||||||
|
let message = command.to_owned() + ": command not found";
|
||||||
|
error(&message);
|
||||||
|
127
|
||||||
|
}
|
|
@ -2,6 +2,7 @@ mod buffer;
|
||||||
mod parser;
|
mod parser;
|
||||||
mod job;
|
mod job;
|
||||||
mod variables;
|
mod variables;
|
||||||
|
mod error;
|
||||||
|
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
use variables::Variables;
|
use variables::Variables;
|
||||||
|
|
Reference in a new issue