SQLite-backed Key / Value Store
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #9 from Tyrannican/safir-core

Safir core

authored by

Graham Keenan and committed by
GitHub
687ee600 7aed2c43

+52 -76
+12 -8
Cargo.lock
··· 676 676 677 677 [[package]] 678 678 name = "safir" 679 - version = "0.6.0" 679 + version = "0.7.0" 680 680 dependencies = [ 681 681 "clap", 682 - "colored", 683 - "dirs", 684 - "rubin", 685 - "serde", 686 - "serde_json", 682 + "safir-core", 687 683 "tokio", 688 684 ] 689 685 690 686 [[package]] 691 - name = "safir-mem" 687 + name = "safir-core" 692 688 version = "0.1.0" 693 689 dependencies = [ 694 - "clap", 695 690 "colored", 696 691 "dirs", 697 692 "psutil", ··· 701 696 "sysinfo", 702 697 "tokio", 703 698 "which", 699 + ] 700 + 701 + [[package]] 702 + name = "safir-mem" 703 + version = "0.2.0" 704 + dependencies = [ 705 + "clap", 706 + "safir-core", 707 + "tokio", 704 708 ] 705 709 706 710 [[package]]
+1 -1
Cargo.toml
··· 1 1 [workspace] 2 - members = ["safir", "safir-mem"] 2 + members = ["safir", "safir-mem", "safir-core"] 3 3 resolver = "2"
+16
safir-core/Cargo.toml
··· 1 + [package] 2 + name = "safir-core" 3 + version = "0.1.0" 4 + edition = "2021" 5 + description = "Internal lib used to build Safir and Safir-mem" 6 + 7 + [dependencies] 8 + colored = "2.0.4" 9 + dirs = "5.0.1" 10 + psutil = "3.2.2" 11 + rubin = "0.3.1" 12 + serde = { version = "1.0.188", features = ["derive"] } 13 + serde_json = "1.0.105" 14 + sysinfo = "0.29.9" 15 + tokio = { version = "1.32.0", features = ["full"] } 16 + which = "4.4.0"
+4
safir-core/src/lib.rs
··· 1 + pub mod config; 2 + pub mod disk; 3 + pub mod mem; 4 + pub mod utils;
+9
safir-mem/CHANGELOG.md
··· 1 + # Change Log 2 + 3 + Documenting changes between versions 4 + 5 + ## v0.2.0 6 + 7 + Moved the core of the control to a new internal library called `safir-core` 8 + 9 + No changes to operation but merits a version bump
+2 -12
safir-mem/Cargo.toml
··· 1 1 [package] 2 2 name = "safir-mem" 3 - version = "0.1.0" 3 + version = "0.2.0" 4 4 edition = "2021" 5 5 authors = ["Graham Keenan graham.keenan@outlook.com"] 6 6 license = "MIT OR Apache-2.0" ··· 15 15 16 16 [dependencies] 17 17 clap = { version = "4.2.5" , features = ["derive"] } 18 - serde = { version = "1", features = ["derive"] } 19 - serde_json = "1" 20 - dirs = "5" 21 - colored = "2" 22 - rubin = "^0.3.1" 23 18 tokio = { version = "1.28.2", features = ["full"] } 24 - psutil = { version = "3.2.2", optional = true } 25 - which = "4.4.0" 26 - sysinfo = "0.29.3" 27 - 28 - [target.'cfg(unix)'.dependencies] 29 - psutil = "3.2.2" 19 + safir-core = { version = "0.1.0", path = "../safir-core" }
safir-mem/src/cfg.rs safir-core/src/config.rs
+2 -4
safir-mem/src/main.rs
··· 1 - mod cfg; 2 1 mod cli; 3 - mod safir; 4 - mod utils; 5 2 6 3 use cli::*; 4 + use safir_core::{mem::SafirMemcache, utils}; 7 5 8 6 use std::process::{Command, Stdio}; 9 7 ··· 15 13 let mut cfg = utils::load_safir_config(&safir_cfg).await?; 16 14 17 15 let safir_state = utils::is_safir_running(cfg.memcache_pid); 18 - let safir_mem = safir::SafirMemcache::new(safir_state); 16 + let safir_mem = SafirMemcache::new(safir_state); 19 17 20 18 match &cli.command { 21 19 Commands::Add(args) => safir_mem.add_entry(&args.key, &args.value).await?,
safir-mem/src/safir.rs safir-core/src/mem.rs
+1 -1
safir-mem/src/utils.rs safir-core/src/utils.rs
··· 1 1 use std::io::{self, Write}; 2 2 use std::path::{Path, PathBuf}; 3 3 4 - use crate::cfg::SafirConfig; 4 + use crate::config::SafirConfig; 5 5 6 6 use colored::*; 7 7 use sysinfo::{Pid, System, SystemExt};
+2 -6
safir/Cargo.toml
··· 1 1 [package] 2 2 name = "safir" 3 - version = "0.6.0" 3 + version = "0.7.0" 4 4 edition = "2021" 5 5 authors = ["Graham Keenan graham.keenan@outlook.com"] 6 6 license = "MIT OR Apache-2.0" ··· 15 15 16 16 [dependencies] 17 17 clap = { version = "4.2.5" , features = ["derive"] } 18 - serde = { version = "1", features = ["derive"] } 19 - serde_json = "1" 20 - dirs = "5" 21 - colored = "2" 22 - rubin = "^0.3.1" 23 18 tokio = { version = "1.28.2", features = ["full"] } 19 + safir-core = { version = "0.1.0", path = "../safir-core" }
+3 -3
safir/src/main.rs
··· 1 1 mod cli; 2 - mod safir; 3 - mod utils; 4 2 5 3 use cli::*; 4 + 5 + use safir_core::{disk::Safir, utils}; 6 6 7 7 #[tokio::main] 8 8 async fn main() -> std::io::Result<()> { 9 9 let cli = Cli::parse(); 10 10 let store_dir = utils::create_safir_directory().await?; 11 - let mut safir = safir::Safir::init(&store_dir).await?; 11 + let mut safir = Safir::init(&store_dir).await?; 12 12 13 13 match &cli.command { 14 14 Commands::Add(args) => {
safir/src/safir.rs safir-core/src/disk.rs
-41
safir/src/utils.rs
··· 1 - use std::io::{self, Write}; 2 - use std::path::PathBuf; 3 - 4 - use colored::*; 5 - use tokio::fs; 6 - 7 - pub async fn create_safir_directory() -> io::Result<PathBuf> { 8 - let home_dir = dirs::home_dir().unwrap(); 9 - let store_path = home_dir.join(".safirstore"); 10 - fs::create_dir_all(&store_path).await?; 11 - 12 - Ok(store_path) 13 - } 14 - 15 - /// Formats and prints the message to stdout 16 - pub fn print_output(msg: &str) { 17 - println!("{}\n", msg); 18 - } 19 - 20 - /// Prints the Safirstore header 21 - pub fn print_header() { 22 - println!("{}", "--=Safirstore=--\n".bold()); 23 - } 24 - 25 - /// Confirmation dialog for important calls 26 - pub fn confirm_entry(msg: &str) -> bool { 27 - let mut answer = String::new(); 28 - print!("{} (y/n) ", msg); 29 - std::io::stdout().flush().expect("failed to flush buffer"); 30 - 31 - let _ = std::io::stdin() 32 - .read_line(&mut answer) 33 - .expect("unable to get input from user"); 34 - 35 - let answer = answer.trim().to_lowercase(); 36 - if answer == "y" { 37 - return true; 38 - } 39 - 40 - false 41 - }