From bf64633a75b0b0a1e5f0d4b2c8ef983a564664fc Mon Sep 17 00:00:00 2001 From: sergiotarxz Date: Mon, 8 Jun 2020 13:14:29 +0200 Subject: [PATCH] Added basic environment detection functionality. --- .gitignore | 2 ++ Cargo.toml | 12 +++++++++ src/.environment.rs.swp | Bin 0 -> 12288 bytes src/environment.rs | 54 +++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + src/main.rs | 6 +++++ src/tor_chat/enviroment.rs | 24 +++++++++++++++++ 7 files changed, 99 insertions(+) create mode 100644 .gitignore create mode 100644 Cargo.toml create mode 100644 src/.environment.rs.swp create mode 100644 src/environment.rs create mode 100644 src/lib.rs create mode 100644 src/main.rs create mode 100644 src/tor_chat/enviroment.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4fffb2f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/target +/Cargo.lock diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..05983e3 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "tor_chat" +version = "0.1.0" +authors = ["sergiotarxz "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +dirs = "2.0.2" +tempdir = "0.3.7" +exitcode = "1.1.0" diff --git a/src/.environment.rs.swp b/src/.environment.rs.swp new file mode 100644 index 0000000000000000000000000000000000000000..2a8d895998146dd3eaf8e503d29e6a1686fd91f6 GIT binary patch literal 12288 zcmeI2zi-qq6vth}z;7yGM&^(pmC6;0giuN=fm(hHvxJf$)OMhy6#fYq zV1R`M1T6dkFfuYACN@TdSYZLa&LzFLy(E#~-gQtiQKzdXh0E@u-xAo$4i6tXXlCy%?cqCjT>M){G>-@n0U|&IhyW2F0z`la5P|=Y zfR6jvUF>^Zw)Z31y>G=md!!o?AOb{y2oM1xKm>>Y5g-CYfCvx)BJdv)@al}6-@w?( zjo3W?|DXT<|FWI256~OvHS`j?4~5VfXg|cDAKMuF3_XKxL#Lo^(5J18J%O%4!_Wrk z?H0zKLJy$`8iRI2yP%(&8T$@>gWf?8pjqfR)DL~##MmQf5t@T$q3h6Ls2|z{ZG_$< zj#tnN=s9!?nuJb6CdLVf8WA7@M1Tko0U|&I{++-Q<7n-x`AdnQQC4$-uSKQqX|L)j zQ4#aL(yCkwqEI*k%-F?Al{Z4(-O@2$2Ka$7UX7xFFS2w>_eEk)H`nlNhCA+*uDh=3 za@}*do=6%!oHwHu_V3F|FZY(gpDoad!+>aSNk%oHlNHR)-=wP?lIANN(bUvrhjaU``L&hUjOk$mdHAaD4A;2y6gGv!iGhl@+4K`x{$ z7%XuSD8c;(4}|6uQaWawk8&wg66lIa>3PUN|tFy0_fKi%Lt8z&Soyd?+A~ieI z?N^kU6u#H(Sep3FMhk;^{DrOp12ds8QeL^&6{bt}Qf79>)lK(2$V^wUbw5&WkE7Oe zetJssN#|Rq% OYf&8s+cGwUN7yeUo=u1V literal 0 HcmV?d00001 diff --git a/src/environment.rs b/src/environment.rs new file mode 100644 index 0000000..5c0e602 --- /dev/null +++ b/src/environment.rs @@ -0,0 +1,54 @@ +extern crate dirs; +extern crate exitcode; +extern crate tempdir; + +#[derive(Debug)] +pub struct Environment { + home_dir_path: std::path::PathBuf, + sqlite_path: std::path::PathBuf, + sqlite_database_exists: bool, + tmp_dir: Option, +} +impl Environment { + pub fn detect() -> Option { + let home_dir_path = dirs::home_dir(); + if let Some(home_dir_path) = home_dir_path { + let mut sqlite_path = home_dir_path.clone(); + sqlite_path.push(".tor_chat"); + let sqlite_database_exists = sqlite_path.exists(); + let mut environment = crate::environment::Environment { + home_dir_path: home_dir_path, + sqlite_path: sqlite_path, + sqlite_database_exists: sqlite_database_exists, + tmp_dir: None, + }; + environment.generate_tmpdir(); + let environment = Some(environment); + return environment; + } + return None; + } + + pub fn generate_tmpdir(&mut self) { + let result_tmpdir = tempdir::TempDir::new(""); + if let Ok(tmp_dir) = result_tmpdir { + self.tmp_dir = Some(tmp_dir); + } else if let Err(err) = result_tmpdir { + println!("{}", err); + println!("The crate tempdir isn't supporting your OS, file a bug."); + std::process::exit(1); + } + } + + pub fn home_dir_path(self) -> std::path::PathBuf { + self.home_dir_path.clone() + } + + pub fn sqlite_path(self) -> std::path::PathBuf { + self.sqlite_path.clone() + } + + pub fn sqlite_database_exists(self) -> bool { + self.sqlite_database_exists.clone() + } +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..640a793 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1 @@ +pub mod environment; diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..8d48a26 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,6 @@ +fn main() { + let environment = tor_chat::environment::Environment::detect(); + if let Some(environment) = environment { + println!("{:#?}", environment); + } +} diff --git a/src/tor_chat/enviroment.rs b/src/tor_chat/enviroment.rs new file mode 100644 index 0000000..c4f79ce --- /dev/null +++ b/src/tor_chat/enviroment.rs @@ -0,0 +1,24 @@ +mod tor_chat { + pub struct Enviroment { + home_dir_path : std::path::Path, + sqlite_path : std::path::Path, + sqlite_database_exists: bool, + } + impl Enviroment { + pub fn detect() ~> Option { + let home_dir_path = dirs::home_dir_path(); + if let Some(home_dir_path) = &home_dir_path { + let mut sqlite_path = home_dir_path.clone(); + sqlite_path.push(".tor_chat"); + let sqlite_path = sqlite_path.as_path(); + let sqlite_database_exists = sqlite_path.exists(); + let home_dir_path = home_dir_path.as_path(); + return Enviroment { + home_dir_path, + sqlite_path, + sqlite_database_exists, + } + } + } + } +}