From 920d3b4af455a72ca1310d8bf0b1cd84a42debc6 Mon Sep 17 00:00:00 2001 From: ChristianVisintin Date: Thu, 24 Dec 2020 17:19:47 +0100 Subject: [PATCH] get_bookmarks_paths; get_config_paths --- src/system/environment.rs | 50 +++++++++++++++++++- src/ui/activities/auth_activity/bookmarks.rs | 8 +--- 2 files changed, 51 insertions(+), 7 deletions(-) diff --git a/src/system/environment.rs b/src/system/environment.rs index b569f64..8a5ef34 100644 --- a/src/system/environment.rs +++ b/src/system/environment.rs @@ -27,7 +27,7 @@ extern crate dirs; // Ext -use std::path::PathBuf; +use std::path::{Path, PathBuf}; /// ### get_config_dir /// @@ -56,6 +56,32 @@ pub fn init_config_dir() -> Result, String> { } } +/// ### get_bookmarks_paths +/// +/// Get paths for bookmarks client +/// Returns: path of bookmarks.toml and path of key +pub fn get_bookmarks_paths(config_dir: &Path) -> (PathBuf, PathBuf) { + // Prepare paths + let mut bookmarks_file: PathBuf = PathBuf::from(config_dir); + bookmarks_file.push("bookmarks.toml"); + let mut key_file: PathBuf = PathBuf::from(config_dir); + key_file.push(".bookmarks.key"); // key file is hidden + (bookmarks_file, key_file) +} + +/// ### get_config_paths +/// +/// Returns paths for config client +/// Returns: path of config.toml and path for ssh keys +pub fn get_config_paths(config_dir: &Path) -> (PathBuf, PathBuf) { + // Prepare paths + let mut bookmarks_file: PathBuf = PathBuf::from(config_dir); + bookmarks_file.push("config.toml"); + let mut keys_dir: PathBuf = PathBuf::from(config_dir); + keys_dir.push(".ssh/"); // Path where keys are stored + (bookmarks_file, keys_dir) +} + #[cfg(test)] mod tests { @@ -92,4 +118,26 @@ mod tests { // Remove file assert!(std::fs::remove_file(conf_dir.as_path()).is_ok()); } + + #[test] + fn test_system_environment_get_bookmarks_paths() { + assert_eq!( + get_bookmarks_paths(&Path::new("/home/omar/.config/termscp/")), + ( + PathBuf::from("/home/omar/.config/termscp/bookmarks.toml"), + PathBuf::from("/home/omar/.config/termscp/.bookmarks.key") + ) + ); + } + + #[test] + fn test_system_environment_get_config_paths() { + assert_eq!( + get_config_paths(&Path::new("/home/omar/.config/termscp/")), + ( + PathBuf::from("/home/omar/.config/termscp/config.toml"), + PathBuf::from("/home/omar/.config/termscp/.ssh/") + ) + ); + } } diff --git a/src/ui/activities/auth_activity/bookmarks.rs b/src/ui/activities/auth_activity/bookmarks.rs index ac10aeb..7526d72 100644 --- a/src/ui/activities/auth_activity/bookmarks.rs +++ b/src/ui/activities/auth_activity/bookmarks.rs @@ -225,12 +225,8 @@ impl AuthActivity { Ok(path) => { // If some configure client, otherwise do nothing; don't bother users telling them that bookmarks are not supported on their system. if let Some(path) = path { - // Prepare paths - let mut bookmarks_file: PathBuf = path.clone(); - bookmarks_file.push("bookmarks.toml"); - let mut key_file: PathBuf = path; - key_file.push(".bookmarks.key"); // key file is hidden - // Initialize client + let (bookmarks_file, key_file): (PathBuf, PathBuf) = environment::get_bookmarks_paths(path.as_path()); + // Initialize client match BookmarksClient::new(bookmarks_file.as_path(), key_file.as_path(), 16) { Ok(cli) => self.bookmarks_client = Some(cli), Err(err) => {