From a7ea49b1c43246977a571bfc7e228e00e9779097 Mon Sep 17 00:00:00 2001 From: Duddino Date: Sun, 6 Oct 2024 13:57:23 +0200 Subject: [PATCH 1/2] Run fetch param script --- src-tauri/src/error.rs | 3 +++ src-tauri/src/explorer/mod.rs | 5 ++++- src-tauri/src/pivx/mod.rs | 14 ++++++++++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src-tauri/src/error.rs b/src-tauri/src/error.rs index 4c94b05..e10299a 100644 --- a/src-tauri/src/error.rs +++ b/src-tauri/src/error.rs @@ -39,6 +39,9 @@ pub enum PIVXErrors { #[error("Invalid response from RPC")] InvalidResponse, + + #[error("Failed to fetch sapling params")] + FetchParamsFailed, } pub type Result = std::result::Result; diff --git a/src-tauri/src/explorer/mod.rs b/src-tauri/src/explorer/mod.rs index cb9e192..ffbf7c4 100644 --- a/src-tauri/src/explorer/mod.rs +++ b/src-tauri/src/explorer/mod.rs @@ -56,8 +56,11 @@ async fn get_explorer() -> &'static DefaultExplorer { let pivx_rpc = PIVXRpc::new(&format!("http://127.0.0.1:{}", RPC_PORT)) .await .unwrap(); + // FIXME: refactor this to accept HOME let address_index = AddressIndex::new( - SqlLite::new(PathBuf::from("~/test.sqlite")).await.unwrap(), + SqlLite::new(PathBuf::from("/home/duddino/test.sqlite")) + .await + .unwrap(), pivx_rpc.clone(), ); std::mem::forget(pivx); diff --git a/src-tauri/src/pivx/mod.rs b/src-tauri/src/pivx/mod.rs index 1f7e676..dfac73a 100644 --- a/src-tauri/src/pivx/mod.rs +++ b/src-tauri/src/pivx/mod.rs @@ -5,6 +5,7 @@ use crate::error::PIVXErrors; use flate2::read::GzDecoder; use std::fs::File; use std::path::{Path, PathBuf}; +use std::process::Command; use tar::Archive; use crate::binary::BinaryDefinition; @@ -15,8 +16,17 @@ impl BinaryDefinition for PIVXDefinition { fn decompress_archive(&self, dir: &Path) -> Result<(), PIVXErrors> { let mut tarball = Archive::new(GzDecoder::new(File::open(dir.join("pivxd.tar.gz"))?)); tarball.unpack(dir)?; - - Ok(()) + let pivx_dir = dir.join("pivx-5.6.1"); + let script_path = pivx_dir.join("install-params.sh"); + let mut handle = Command::new(script_path) + .current_dir(pivx_dir) + .spawn() + .map_err(|_| PIVXErrors::FetchParamsFailed)?; + let status = handle.wait().map_err(|_| PIVXErrors::FetchParamsFailed)?; + match status.success() { + true => Ok(()), + false => Err(PIVXErrors::FetchParamsFailed), + } } fn get_url(&self) -> &str { From 9f6d62761f0ab74e1ed4d3e64ca92560771df9a3 Mon Sep 17 00:00:00 2001 From: Duddino Date: Sun, 6 Oct 2024 14:07:56 +0200 Subject: [PATCH 2/2] Refactor decompress_archive and fix tests --- src-tauri/src/pivx/mod.rs | 15 +++++++++++++-- src-tauri/src/pivx/test.rs | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src-tauri/src/pivx/mod.rs b/src-tauri/src/pivx/mod.rs index dfac73a..cf691d0 100644 --- a/src-tauri/src/pivx/mod.rs +++ b/src-tauri/src/pivx/mod.rs @@ -12,10 +12,14 @@ use crate::binary::BinaryDefinition; pub struct PIVXDefinition; -impl BinaryDefinition for PIVXDefinition { - fn decompress_archive(&self, dir: &Path) -> Result<(), PIVXErrors> { +impl PIVXDefinition { + fn inner_decompress_archive(&self, dir: &Path) -> Result<(), PIVXErrors> { let mut tarball = Archive::new(GzDecoder::new(File::open(dir.join("pivxd.tar.gz"))?)); tarball.unpack(dir)?; + Ok(()) + } + + fn inner_install_params(&self, dir: &Path) -> Result<(), PIVXErrors> { let pivx_dir = dir.join("pivx-5.6.1"); let script_path = pivx_dir.join("install-params.sh"); let mut handle = Command::new(script_path) @@ -28,6 +32,13 @@ impl BinaryDefinition for PIVXDefinition { false => Err(PIVXErrors::FetchParamsFailed), } } +} + +impl BinaryDefinition for PIVXDefinition { + fn decompress_archive(&self, dir: &Path) -> Result<(), PIVXErrors> { + self.inner_decompress_archive(dir)?; + self.inner_install_params(dir) + } fn get_url(&self) -> &str { #[cfg(target_os = "linux")] diff --git a/src-tauri/src/pivx/test.rs b/src-tauri/src/pivx/test.rs index e5a0046..b08918f 100644 --- a/src-tauri/src/pivx/test.rs +++ b/src-tauri/src/pivx/test.rs @@ -24,7 +24,7 @@ mod pivx_fetch { ]; file.write_all(&data)?; let pivx_def = PIVXDefinition; - pivx_def.decompress_archive(&data_dir)?; + pivx_def.inner_decompress_archive(&data_dir)?; let mut dirs: Vec<_> = std::fs::read_dir(data_dir)? .filter_map(|d| {