aboutsummaryrefslogtreecommitdiff
path: root/crates
diff options
context:
space:
mode:
authorFuwn <[email protected]>2022-02-08 18:26:17 -0800
committerFuwn <[email protected]>2025-06-09 00:46:07 -0700
commit16e321165b4cd08d2346b60da79184fcc003104e (patch)
tree0ef2157851138c061cfbe1e363855f249c94fc43 /crates
parentfeat(cli): check before initing, no overwrite (diff)
downloadarchived-divina-16e321165b4cd08d2346b60da79184fcc003104e.tar.xz
archived-divina-16e321165b4cd08d2346b60da79184fcc003104e.zip
feat(divina_util): create and implement utility
Diffstat (limited to 'crates')
-rw-r--r--crates/divina/Cargo.toml3
-rw-r--r--crates/divina/src/cli.rs5
-rw-r--r--crates/divina/src/main.rs4
-rw-r--r--crates/divina_config/Cargo.toml3
-rw-r--r--crates/divina_config/src/lib.rs4
-rw-r--r--crates/divina_util/Cargo.toml13
-rw-r--r--crates/divina_util/src/lib.rs29
7 files changed, 52 insertions, 9 deletions
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);
+ };
+}