diff options
| author | Fuwn <[email protected]> | 2022-02-09 02:26:17 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-06-09 07:46:07 +0000 |
| commit | 6939780adf617cdbf4d1c369ad7de8640b189181 (patch) | |
| tree | 0ef2157851138c061cfbe1e363855f249c94fc43 | |
| parent | feat(cli): check before initing, no overwrite (diff) | |
| download | divina-6939780adf617cdbf4d1c369ad7de8640b189181.tar.xz divina-6939780adf617cdbf4d1c369ad7de8640b189181.zip | |
feat(divina_util): create and implement utility
| -rw-r--r-- | Cargo.toml | 3 | ||||
| -rw-r--r-- | crates/divina/Cargo.toml | 3 | ||||
| -rw-r--r-- | crates/divina/src/cli.rs | 5 | ||||
| -rw-r--r-- | crates/divina/src/main.rs | 4 | ||||
| -rw-r--r-- | crates/divina_config/Cargo.toml | 3 | ||||
| -rw-r--r-- | crates/divina_config/src/lib.rs | 4 | ||||
| -rw-r--r-- | crates/divina_util/Cargo.toml | 13 | ||||
| -rw-r--r-- | crates/divina_util/src/lib.rs | 29 |
8 files changed, 54 insertions, 10 deletions
@@ -5,7 +5,8 @@ members = [ "crates/divina", "crates/divina_config", "crates/divina_git", - "crates/divina_compile" + "crates/divina_compile", + "crates/divina_util" ] # Slower builds, faster executables diff --git a/crates/divina/Cargo.toml b/crates/divina/Cargo.toml index 50eac97..17019be 100644 --- a/crates/divina/Cargo.toml +++ b/crates/divina/Cargo.toml @@ -36,6 +36,9 @@ human-panic = "1.0.3" # Compilation divina_compile = { path = "../divina_compile" } +# Utility +divina_util = { path = "../divina_util" } + [target.'cfg(windows)'.dependencies] # Allocator mimalloc = { version = "0.1.26", default-features = false } diff --git a/crates/divina/src/cli.rs b/crates/divina/src/cli.rs index 4cbb6c7..e373d60 100644 --- a/crates/divina/src/cli.rs +++ b/crates/divina/src/cli.rs @@ -56,12 +56,11 @@ pub fn execute(divina: &mut crate::Divina) { let path = init_matches.value_of("path").unwrap_or("."); if Path::new("Divina.lua").exists() { - println!( + divina_util::exit_with!( + 1, "!! could not clone init repository to '{}', a 'Divina.lua' already exists", path ); - - std::process::exit(1); } divina_git::clone(repository, &format!("./{}", path)) diff --git a/crates/divina/src/main.rs b/crates/divina/src/main.rs index dc7e17e..0d408a4 100644 --- a/crates/divina/src/main.rs +++ b/crates/divina/src/main.rs @@ -15,8 +15,4 @@ async fn main() { divina.configure_compiler(divina_compile::Compiler::new()); // Handle CLI divina.perform(); - - // Process doesn't exit on Unix properly, this solves it... - #[cfg(unix)] - std::process::exit(0); } diff --git a/crates/divina_config/Cargo.toml b/crates/divina_config/Cargo.toml index d232d68..234ea42 100644 --- a/crates/divina_config/Cargo.toml +++ b/crates/divina_config/Cargo.toml @@ -15,3 +15,6 @@ publish = false [dependencies] # Lua rlua = "0.19.0" + +# Utility +divina_util = { path = "../divina_util" } diff --git a/crates/divina_config/src/lib.rs b/crates/divina_config/src/lib.rs index 1df8ddb..dee15a7 100644 --- a/crates/divina_config/src/lib.rs +++ b/crates/divina_config/src/lib.rs @@ -274,12 +274,12 @@ impl Config { } else if globals.get::<_, Table<'_>>("Package").is_ok() { ConfigType::Package } else { - println!( + divina_util::exit_with!( + 1, "!! '{}' is neither `Workspace` nor `Package`, perhaps you've forgotten to assign to it \ ?", file ); - std::process::exit(0); }; if self.config_type == ConfigType::Package { diff --git a/crates/divina_util/Cargo.toml b/crates/divina_util/Cargo.toml new file mode 100644 index 0000000..f07edb3 --- /dev/null +++ b/crates/divina_util/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "divina_util" +version = "0.1.0" +authors = ["Fuwn <[email protected]>"] +edition = "2021" +description = "Divina's utilities" +readme = "../../README.rst" +homepage = "https://divina.land" +repository = "https://github.com/divinaland/Divina" +license = "GPL-3.0-only" +keywords = ["divina", "buildsystem", "build", "assembly", "asm", "nasm", "yasm"] +categories = ["development-tools::build-utils"] +publish = false diff --git a/crates/divina_util/src/lib.rs b/crates/divina_util/src/lib.rs new file mode 100644 index 0000000..6e2b559 --- /dev/null +++ b/crates/divina_util/src/lib.rs @@ -0,0 +1,29 @@ +// Copyright (C) 2022-2022 Fuwn <[email protected]> +// SPDX-License-Identifier: GPL-3.0-only + +#![deny( + warnings, + nonstandard_style, + unused, + future_incompatible, + rust_2018_idioms, + unsafe_code +)] +#![deny(clippy::all, clippy::nursery, clippy::pedantic)] +#![recursion_limit = "128"] +#![doc( + html_logo_url = "https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/160/twitter/282/ribbon_1f380.png", + html_favicon_url = "https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/160/twitter/282/ribbon_1f380.png" +)] + +#[macro_export] +macro_rules! exit_with { + ($exit_code:expr) => { + std::process::exit($exit_code); + }; + ($exit_code:expr, $($message:tt)*) => { + println!($($message)*); + + std::process::exit($exit_code); + }; +} |