aboutsummaryrefslogtreecommitdiffstats
path: root/ui/backend
diff options
context:
space:
mode:
authorEllie Huxtable <ellie@elliehuxtable.com>2024-04-29 14:59:59 +0100
committerGitHub <noreply@github.com>2024-04-29 14:59:59 +0100
commitcea48a1545250429b78235b2ad00b8243923e2b2 (patch)
tree08866c06ee81bf841e6bf0f20feb9a88c9435cfa /ui/backend
parentchore(deps): bump rustix from 0.38.32 to 0.38.34 (#1986) (diff)
downloadatuin-cea48a1545250429b78235b2ad00b8243923e2b2.zip
feat(ui/dotfiles): add vars (#1989)
Diffstat (limited to 'ui/backend')
-rw-r--r--ui/backend/Cargo.lock8
-rw-r--r--ui/backend/Cargo.toml6
-rw-r--r--ui/backend/src/dotfiles/mod.rs1
-rw-r--r--ui/backend/src/dotfiles/vars.rs57
-rw-r--r--ui/backend/src/main.rs3
5 files changed, 68 insertions, 7 deletions
diff --git a/ui/backend/Cargo.lock b/ui/backend/Cargo.lock
index abb72ce2..85736e2a 100644
--- a/ui/backend/Cargo.lock
+++ b/ui/backend/Cargo.lock
@@ -5285,18 +5285,18 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
[[package]]
name = "typed-builder"
-version = "0.18.1"
+version = "0.18.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "444d8748011b93cb168770e8092458cb0f8854f931ff82fdf6ddfbd72a9c933e"
+checksum = "77739c880e00693faef3d65ea3aad725f196da38b22fdc7ea6ded6e1ce4d3add"
dependencies = [
"typed-builder-macro",
]
[[package]]
name = "typed-builder-macro"
-version = "0.18.1"
+version = "0.18.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "563b3b88238ec95680aef36bdece66896eaa7ce3c0f1b4f39d38fb2435261352"
+checksum = "1f718dfaf347dcb5b983bfc87608144b0bad87970aebcbea5ce44d2a30c08e63"
dependencies = [
"proc-macro2",
"quote",
diff --git a/ui/backend/Cargo.toml b/ui/backend/Cargo.toml
index 4e0019d3..9cf47436 100644
--- a/ui/backend/Cargo.toml
+++ b/ui/backend/Cargo.toml
@@ -12,10 +12,10 @@ edition = "2021"
tauri-build = { version = "2.0.0-beta", features = [] }
[dependencies]
-atuin-client = { path = "../../atuin-client", version = "18.2.0" }
-atuin-common = { path = "../../atuin-common", version = "18.2.0" }
+atuin-client = { path = "../../crates/atuin-client", version = "18.2.0" }
+atuin-common = { path = "../../crates/atuin-common", version = "18.2.0" }
-atuin-dotfiles = { path = "../../atuin-dotfiles", version = "0.2.0" }
+atuin-dotfiles = { path = "../../crates/atuin-dotfiles", version = "0.2.0" }
eyre = "0.6"
tauri = { version = "2.0.0-beta", features = ["tray-icon"] }
diff --git a/ui/backend/src/dotfiles/mod.rs b/ui/backend/src/dotfiles/mod.rs
index d293a01b..feafe783 100644
--- a/ui/backend/src/dotfiles/mod.rs
+++ b/ui/backend/src/dotfiles/mod.rs
@@ -1 +1,2 @@
pub mod aliases;
+pub mod vars;
diff --git a/ui/backend/src/dotfiles/vars.rs b/ui/backend/src/dotfiles/vars.rs
new file mode 100644
index 00000000..d8d5bd75
--- /dev/null
+++ b/ui/backend/src/dotfiles/vars.rs
@@ -0,0 +1,57 @@
+use std::path::PathBuf;
+
+use atuin_client::{encryption, record::sqlite_store::SqliteStore, settings::Settings};
+use atuin_common::shell::Shell;
+use atuin_dotfiles::{
+ shell::{existing_aliases, Alias, Var},
+ store::var::VarStore,
+};
+
+async fn var_store() -> eyre::Result<VarStore> {
+ let settings = Settings::new()?;
+
+ let record_store_path = PathBuf::from(settings.record_store_path.as_str());
+ let sqlite_store = SqliteStore::new(record_store_path, settings.local_timeout).await?;
+
+ let encryption_key: [u8; 32] = encryption::load_key(&settings)?.into();
+
+ let host_id = Settings::host_id().expect("failed to get host_id");
+
+ Ok(VarStore::new(sqlite_store, host_id, encryption_key))
+}
+
+#[tauri::command]
+pub async fn vars() -> Result<Vec<Var>, String> {
+ let var_store = var_store().await.map_err(|e| e.to_string())?;
+
+ let vars = var_store
+ .vars()
+ .await
+ .map_err(|e| format!("failed to load aliases: {}", e))?;
+
+ Ok(vars)
+}
+
+#[tauri::command]
+pub async fn delete_var(name: String) -> Result<(), String> {
+ let var_store = var_store().await.map_err(|e| e.to_string())?;
+
+ var_store
+ .delete(name.as_str())
+ .await
+ .map_err(|e| e.to_string())?;
+
+ Ok(())
+}
+
+#[tauri::command]
+pub async fn set_var(name: String, value: String, export: bool) -> Result<(), String> {
+ let var_store = var_store().await.map_err(|e| e.to_string())?;
+
+ var_store
+ .set(name.as_str(), value.as_str(), export)
+ .await
+ .map_err(|e| e.to_string())?;
+
+ Ok(())
+}
diff --git a/ui/backend/src/main.rs b/ui/backend/src/main.rs
index fbcf9481..fe6271b8 100644
--- a/ui/backend/src/main.rs
+++ b/ui/backend/src/main.rs
@@ -118,6 +118,9 @@ fn main() {
dotfiles::aliases::import_aliases,
dotfiles::aliases::delete_alias,
dotfiles::aliases::set_alias,
+ dotfiles::vars::vars,
+ dotfiles::vars::delete_var,
+ dotfiles::vars::set_var,
])
.run(tauri::generate_context!())
.expect("error while running tauri application");