aboutsummaryrefslogtreecommitdiff
path: root/crates/whirl_common/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2021-05-20 17:05:59 +0000
committerFuwn <[email protected]>2021-05-20 17:05:59 +0000
commit9dbc613765de8ab7dfa8e1374cf6661dcfd56bc8 (patch)
tree8cfff6a23bb72db2660e68c63a8cf9d0539a061f /crates/whirl_common/src
parentfeat(readme): add sqlfluff as a dev dep (diff)
downloadwhirl-9dbc613765de8ab7dfa8e1374cf6661dcfd56bc8.tar.xz
whirl-9dbc613765de8ab7dfa8e1374cf6661dcfd56bc8.zip
refactor(global): move crates around, stricter module isolation
Diffstat (limited to 'crates/whirl_common/src')
-rw-r--r--crates/whirl_common/src/lib.rs16
-rw-r--r--crates/whirl_common/src/log.rs19
-rw-r--r--crates/whirl_common/src/sort.rs6
-rw-r--r--crates/whirl_common/src/system.rs38
4 files changed, 79 insertions, 0 deletions
diff --git a/crates/whirl_common/src/lib.rs b/crates/whirl_common/src/lib.rs
new file mode 100644
index 0000000..05a0e0c
--- /dev/null
+++ b/crates/whirl_common/src/lib.rs
@@ -0,0 +1,16 @@
+// Copyleft (ɔ) 2021-2021 The Whirlsplash Collective
+// SPDX-License-Identifier: GPL-3.0-only
+
+#![feature(
+ type_ascription,
+ hash_set_entry,
+ type_name_of_val,
+ decl_macro,
+ proc_macro_hygiene
+)]
+#![warn(rust_2018_idioms)]
+#![recursion_limit = "128"]
+
+pub mod log;
+pub mod sort;
+pub mod system;
diff --git a/crates/whirl_common/src/log.rs b/crates/whirl_common/src/log.rs
new file mode 100644
index 0000000..39ceca0
--- /dev/null
+++ b/crates/whirl_common/src/log.rs
@@ -0,0 +1,19 @@
+// Copyleft (ɔ) 2021-2021 The Whirlsplash Collective
+// SPDX-License-Identifier: GPL-3.0-only
+
+use whirl_config::Config;
+
+pub fn calculate_log_level() -> String {
+ let mut level;
+
+ level = match Config::get().whirlsplash.log.level {
+ 2 => "debug".to_string(),
+ 3 => "trace".to_string(),
+ _ => "info".to_string(),
+ };
+ if !Config::get().whirlsplash.log.everything {
+ level = format!("whirl={}", level);
+ }
+
+ level
+}
diff --git a/crates/whirl_common/src/sort.rs b/crates/whirl_common/src/sort.rs
new file mode 100644
index 0000000..131fa55
--- /dev/null
+++ b/crates/whirl_common/src/sort.rs
@@ -0,0 +1,6 @@
+// Copyleft (ɔ) 2021-2021 The Whirlsplash Collective
+// SPDX-License-Identifier: GPL-3.0-only
+
+pub fn sort_vec_alphabetically(vec: &mut Vec<&str>) {
+ vec.sort_by(|a, b| a.to_lowercase().cmp(&b.to_lowercase()));
+}
diff --git a/crates/whirl_common/src/system.rs b/crates/whirl_common/src/system.rs
new file mode 100644
index 0000000..7a823a0
--- /dev/null
+++ b/crates/whirl_common/src/system.rs
@@ -0,0 +1,38 @@
+// Copyleft (ɔ) 2021-2021 The Whirlsplash Collective
+// SPDX-License-Identifier: GPL-3.0-only
+
+const WEEK: usize = 60 * 60 * 60 * 60;
+const DAY: usize = 60 * 60 * 60;
+const HOUR: usize = 60 * 60;
+const MIN: usize = 60;
+
+fn make_parts(t: usize, steps: &[usize], mut accum: Vec<usize>) -> Vec<usize> {
+ match steps.split_first() {
+ None => accum,
+ Some((s, steps)) => {
+ accum.push(t / *s);
+ make_parts(t % *s, steps, accum)
+ }
+ }
+}
+
+pub fn seconds_to_hrtime(seconds: usize) -> String {
+ let word = ["week", "day", "hour", "min", "sec"];
+
+ make_parts(seconds, &[WEEK, DAY, HOUR, MIN, 1], Vec::new())
+ .iter()
+ .enumerate()
+ .filter_map(|(i, s)| {
+ if s > &0 {
+ if s > &1 {
+ Some(format!("{} {}s", s, word[i]))
+ } else {
+ Some(format!("{} {}", s, word[i]))
+ }
+ } else {
+ None
+ }
+ })
+ .collect::<Vec<String>>()
+ .join(", ")
+}