fix: return exitcode (#1220)

rustic now returns an error code for failing command.

Note: Some command do not fail yet fail in every cases user would expect
is. Most notably the `check` ckommand producing `error` messages may
still return error code 0.

closes #927
This commit is contained in:
aawsome 2024-09-07 07:28:59 +02:00 committed by GitHub
parent 9cada7eab4
commit ffe05f58d0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,11 +1,11 @@
//! Rustic Abscissa Application
use std::env;
use std::{env, process};
use abscissa_core::{
application::{self, AppCell},
application::{self, fatal_error, AppCell},
config::{self, CfgCell},
terminal::component::Terminal,
Application, Component, FrameworkError, StandardPaths,
Application, Component, FrameworkError, Shutdown, StandardPaths,
};
use anyhow::Result;
@ -99,4 +99,25 @@ impl Application for RusticApp {
Ok(())
}
/// Shut down this application gracefully
fn shutdown(&self, shutdown: Shutdown) -> ! {
let exit_code = match shutdown {
Shutdown::Crash => 1,
_ => 0,
};
self.shutdown_with_exitcode(shutdown, exit_code)
}
}
impl RusticApp {
/// Shut down this application gracefully, exiting with given exit code.
fn shutdown_with_exitcode(&self, shutdown: Shutdown, exit_code: i32) -> ! {
let result = self.state().components().shutdown(self, shutdown);
if let Err(e) = result {
fatal_error(self, &e)
}
process::exit(exit_code);
}
}