aboutsummaryrefslogtreecommitdiff
path: root/mling/src/namespace_manager.rs
diff options
context:
space:
mode:
Diffstat (limited to 'mling/src/namespace_manager.rs')
-rw-r--r--mling/src/namespace_manager.rs24
1 files changed, 18 insertions, 6 deletions
diff --git a/mling/src/namespace_manager.rs b/mling/src/namespace_manager.rs
index 51181c3..d5176dd 100644
--- a/mling/src/namespace_manager.rs
+++ b/mling/src/namespace_manager.rs
@@ -2,6 +2,7 @@ use std::path::PathBuf;
use just_fmt::kebab_case;
+#[must_use]
pub fn list_namespaces(
show_trusted: bool,
show_untrusted: bool,
@@ -13,14 +14,12 @@ pub fn list_namespaces(
}
let mut namespaces = Vec::new();
- let entries = match std::fs::read_dir(&wdir) {
- Ok(entries) => entries,
- Err(_) => return Vec::new(),
+ let Ok(entries) = std::fs::read_dir(&wdir) else {
+ return Vec::new();
};
for entry in entries {
- let entry = match entry {
- Ok(e) => e,
- Err(_) => continue,
+ let Ok(entry) = entry else {
+ continue;
};
let path = entry.path();
if path.is_dir()
@@ -71,24 +70,34 @@ pub fn remove_namespace(namespace: String) {
}
}
+/// Returns the mingling data directory.
+///
+/// # Panics
+///
+/// Panics if the platform's data directory cannot be determined.
+#[must_use]
pub fn working_dir() -> PathBuf {
dirs::data_dir().unwrap().join("mingling")
}
+#[must_use]
pub fn namespace_dir(namespace: String) -> PathBuf {
working_dir().join(kebab_case!(namespace))
}
+#[must_use]
pub fn is_untrusted_namespace(namespace: String) -> bool {
let untrusted_file = namespace_dir(namespace).join("UNTRUSTED");
untrusted_file.exists()
}
+#[must_use]
pub fn is_trusted_namespace(namespace: String) -> bool {
let trusted = namespace_dir(namespace).join("TRUSTED");
trusted.exists()
}
+#[must_use]
pub fn is_untagged_namespace(namespace: String) -> bool {
let ndir = namespace_dir(namespace);
let trusted = ndir.join("TRUSTED");
@@ -96,14 +105,17 @@ pub fn is_untagged_namespace(namespace: String) -> bool {
!trusted.exists() && !untrusted.exists()
}
+#[must_use]
pub fn bin_dir(namespace: String) -> PathBuf {
namespace_dir(namespace).join("bin")
}
+#[must_use]
pub fn comp_dir(namespace: String) -> PathBuf {
namespace_dir(namespace).join("comp")
}
+#[must_use]
pub fn exe_path(namespace: String, bin_name_without_ext: String) -> PathBuf {
if cfg!(target_os = "windows") {
bin_dir(namespace).join(bin_name_without_ext + ".exe")