Return non-zero exit code on error

This commit is contained in:
trevyn 2022-08-27 11:18:44 +04:00
parent bc1a81b84b
commit 9152e00fab
8 changed files with 21 additions and 21 deletions

View file

@ -40,7 +40,7 @@ impl Build {
crate::builder::build_desktop(&crate_config, false)?; crate::builder::build_desktop(&crate_config, false)?;
} }
_ => { _ => {
return custom_error!("Unsoppurt platform target."); return custom_error!("Unsupported platform target.");
} }
} }

View file

@ -16,8 +16,7 @@ impl Clean {
.output()?; .output()?;
if !output.status.success() { if !output.status.success() {
log::error!("Cargo clean failed."); return custom_error!("Cargo clean failed.");
return Ok(());
} }
let out_dir = crate_config let out_dir = crate_config

View file

@ -17,8 +17,7 @@ pub struct Create {
impl Create { impl Create {
pub fn create(self) -> Result<()> { pub fn create(self) -> Result<()> {
if Self::name_vaild_check(self.name.clone()) { if Self::name_vaild_check(self.name.clone()) {
log::error!("❗Unsupported project name."); return custom_error!("❗Unsupported project name.");
return Ok(());
} }
let project_path = PathBuf::from(&self.name); let project_path = PathBuf::from(&self.name);

View file

@ -22,7 +22,7 @@ use std::{
fs::{remove_dir_all, File}, fs::{remove_dir_all, File},
io::{Read, Write}, io::{Read, Write},
path::PathBuf, path::PathBuf,
process::{exit, Command, Stdio}, process::{Command, Stdio},
}; };
/// Build, bundle, & ship your Dioxus app. /// Build, bundle, & ship your Dioxus app.

View file

@ -30,15 +30,14 @@ impl Tool {
if let Some(v) = tools::tools_path().to_str() { if let Some(v) = tools::tools_path().to_str() {
println!("{}", v); println!("{}", v);
} else { } else {
log::error!("Tools path get failed."); return custom_error!("Tools path get failed.");
} }
} }
Tool::Add { name } => { Tool::Add { name } => {
let tool_list = tools::tool_list(); let tool_list = tools::tool_list();
if !tool_list.contains(&name.as_str()) { if !tool_list.contains(&name.as_str()) {
log::error!("Tool {name} not found."); return custom_error!("Tool {name} not found.");
return Ok(());
} }
let target_tool = tools::Tool::from_str(&name).unwrap(); let target_tool = tools::Tool::from_str(&name).unwrap();
@ -49,17 +48,15 @@ impl Tool {
log::info!("Start to download tool package..."); log::info!("Start to download tool package...");
if let Err(e) = target_tool.download_package().await { if let Err(e) = target_tool.download_package().await {
log::error!("Tool download failed: {e}"); return custom_error!("Tool download failed: {e}");
return Ok(());
} }
log::info!("Start to install tool package..."); log::info!("Start to install tool package...");
if let Err(e) = target_tool.install_package().await { if let Err(e) = target_tool.install_package().await {
log::error!("Tool install failed: {e}"); return custom_error!("Tool install failed: {e}");
return Ok(());
} }
log::info!("Tool {name} install successfully!"); log::info!("Tool {name} installed successfully!");
} }
} }
Ok(()) Ok(())

View file

@ -27,14 +27,11 @@ impl Translate {
} = self; } = self;
let contents = match file { let contents = match file {
Some(input) => std::fs::read_to_string(&input).unwrap_or_else(|e| { Some(input) => std::fs::read_to_string(&input)
log::error!("Cloud not read input file: {}.", e); .map_err(|e| Error::CustomError(format!("Could not read input file: {e}.")))?,
exit(0);
}),
None => { None => {
if atty::is(atty::Stream::Stdin) { if atty::is(atty::Stream::Stdin) {
log::error!("No input file, source, or stdin to translate from."); return custom_error!("No input file, source, or stdin to translate from.");
exit(0);
} }
let mut buffer = String::new(); let mut buffer = String::new();

View file

@ -63,7 +63,7 @@ impl From<hyper::Error> for Error {
#[macro_export] #[macro_export]
macro_rules! custom_error { macro_rules! custom_error {
($msg:literal $(,)?) => { ($msg:literal $(,)?) => {
Err(Error::CustomError($msg.to_string())) Err(Error::CustomError(format!($msg)))
}; };
($err:expr $(,)?) => { ($err:expr $(,)?) => {
Err(Error::from($err)) Err(Error::from($err))

View file

@ -1,5 +1,6 @@
use clap::Parser; use clap::Parser;
use dioxus_cli::*; use dioxus_cli::*;
use std::process::exit;
#[tokio::main] #[tokio::main]
async fn main() -> Result<()> { async fn main() -> Result<()> {
@ -10,42 +11,49 @@ async fn main() -> Result<()> {
Commands::Translate(opts) => { Commands::Translate(opts) => {
if let Err(e) = opts.translate() { if let Err(e) = opts.translate() {
log::error!("🚫 Translate failed: {}", e); log::error!("🚫 Translate failed: {}", e);
exit(1);
} }
} }
Commands::Build(opts) => { Commands::Build(opts) => {
if let Err(e) = opts.build() { if let Err(e) = opts.build() {
log::error!("🚫 Build project failed: {}", e); log::error!("🚫 Build project failed: {}", e);
exit(1);
} }
} }
Commands::Clean(opts) => { Commands::Clean(opts) => {
if let Err(e) = opts.clean() { if let Err(e) = opts.clean() {
log::error!("🚫 Clean project failed: {}", e); log::error!("🚫 Clean project failed: {}", e);
exit(1);
} }
} }
Commands::Serve(opts) => { Commands::Serve(opts) => {
if let Err(e) = opts.serve().await { if let Err(e) = opts.serve().await {
log::error!("🚫 Serve startup failed: {}", e); log::error!("🚫 Serve startup failed: {}", e);
exit(1);
} }
} }
Commands::Create(opts) => { Commands::Create(opts) => {
if let Err(e) = opts.create() { if let Err(e) = opts.create() {
log::error!("🚫 Create project failed: {}", e); log::error!("🚫 Create project failed: {}", e);
exit(1);
} }
} }
Commands::Config(opts) => { Commands::Config(opts) => {
if let Err(e) = opts.config() { if let Err(e) = opts.config() {
log::error!("config error: {}", e); log::error!("config error: {}", e);
exit(1);
} }
} }
Commands::Tool(opts) => { Commands::Tool(opts) => {
if let Err(e) = opts.tool().await { if let Err(e) = opts.tool().await {
log::error!("tool error: {}", e); log::error!("tool error: {}", e);
exit(1);
} }
} }
} }