Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: better startup paths #33

Merged
merged 3 commits into from
Aug 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src-tauri/src/cpu_miner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ impl CpuMiner {
cpu_miner_config: &CpuMinerConfig,
local_mm_proxy: &MmProxyManager,
base_path: PathBuf,
cache_dir: PathBuf,
log_dir: PathBuf,
window: tauri::Window,
) -> Result<(), anyhow::Error> {
if self.watcher_task.is_some() {
Expand Down Expand Up @@ -69,7 +71,7 @@ impl CpuMiner {
}
};
let xmrig = XmrigAdapter::new(xmrig_node_connection, "44AFFq5kSiGBoZ4NMDwYtN18obc8AemS33DBLWs3H7otXft3XjrpDtQGv7SqSsaBYBb98uNbr2VBBEt7f2wfn3RVGQBEP3A".to_string() );
let (mut _rx, mut xmrig_child, client) = xmrig.spawn(window.clone())?;
let (mut _rx, mut xmrig_child, client) = xmrig.spawn(cache_dir, log_dir, window.clone())?;
self.api_client = Some(client);

self.watcher_task = Some(tauri::async_runtime::spawn(async move {
Expand Down
12 changes: 7 additions & 5 deletions src-tauri/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ async fn setup_application<'r>(
},
);
let data_dir = app.path_resolver().app_local_data_dir().unwrap();
let cache_dir = app.path_resolver().app_cache_dir().unwrap();
let task1 = state
.node_manager
.ensure_started(state.shutdown.to_signal(), data_dir.clone(), window.clone())
Expand All @@ -81,11 +82,10 @@ async fn setup_application<'r>(
e.to_string()
});

let task3 =
XmrigAdapter::ensure_latest(cache_dir().unwrap(), false, window.clone()).map_err(|e| {
error!(target: LOG_TARGET, "Could not download xmrig: {:?}", e);
e.to_string()
});
let task3 = XmrigAdapter::ensure_latest(cache_dir, false, window.clone()).map_err(|e| {
error!(target: LOG_TARGET, "Could not download xmrig: {:?}", e);
e.to_string()
});

match try_join!(task1, task2, task3) {
Ok(_) => {
Expand Down Expand Up @@ -133,6 +133,8 @@ async fn start_mining<'r>(
&config,
&mm_proxy_manager,
app.path_resolver().app_local_data_dir().unwrap(),
app.path_resolver().app_cache_dir().unwrap(),
app.path_resolver().app_log_dir().unwrap(),
window.clone(),
)
.await
Expand Down
7 changes: 2 additions & 5 deletions src-tauri/src/merge_mining_adapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,13 @@ impl ProcessAdapter for MergeMiningProxyAdapter {

fn spawn_inner(
&self,
_log_folder: PathBuf,
data_dir: PathBuf,
window: tauri::Window,
) -> Result<(Self::Instance, Self::StatusMonitor), Error> {
let inner_shutdown = Shutdown::new();
let shutdown_signal = inner_shutdown.to_signal();

let working_dir = data_local_dir()
.unwrap()
.join("tari-universe")
.join("mmproxy");
let working_dir = data_dir.join("mmproxy");
std::fs::create_dir_all(&working_dir)?;
let args: Vec<String> = vec![
"-b".to_string(),
Expand Down
4 changes: 2 additions & 2 deletions src-tauri/src/minotari_node_adapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,14 @@ impl ProcessAdapter for MinotariNodeAdapter {

fn spawn_inner(
&self,
_log_path: PathBuf,
data_dir: PathBuf,
window: tauri::Window,
) -> Result<(Self::Instance, Self::StatusMonitor), Error> {
let inner_shutdown = Shutdown::new();
let shutdown_signal = inner_shutdown.to_signal();

info!(target: LOG_TARGET, "Starting minotari node");
let working_dir = data_local_dir().unwrap().join("tari-universe").join("node");
let working_dir = data_dir.join("node");
std::fs::create_dir_all(&working_dir)?;

let mut args: Vec<String> = vec![
Expand Down
7 changes: 2 additions & 5 deletions src-tauri/src/wallet_adapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,18 +46,15 @@ impl ProcessAdapter for WalletAdapter {
type StatusMonitor = WalletStatusMonitor;
fn spawn_inner(
&self,
_log_path: PathBuf,
data_dir: PathBuf,
window: tauri::Window,
) -> Result<(Self::Instance, Self::StatusMonitor), Error> {
// TODO: This was copied from node_adapter. This should be DRY'ed up
let inner_shutdown = Shutdown::new();
let shutdown_signal = inner_shutdown.to_signal();

info!(target: LOG_TARGET, "Starting read only wallet");
let working_dir = data_local_dir()
.unwrap()
.join("tari-universe")
.join("wallet");
let working_dir = data_dir.join("wallet");
std::fs::create_dir_all(&working_dir)?;

let mut args: Vec<String> = vec![
Expand Down
10 changes: 2 additions & 8 deletions src-tauri/src/xmrig/latest_release.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,10 @@ pub struct XmrigRelease {
}

impl XmrigRelease {
pub fn get_asset(&self, os: &str) -> Option<&Asset> {
pub fn get_asset(&self, id: &str) -> Option<&Asset> {
for asset in &self.assets {
info!(target: LOG_TARGET, "Checking asset {:?}", asset);
// macos-arm64 doesn't have an os field for some reason
if asset.os.is_none() {
if asset.id == os {
return Some(asset);
}
}
if asset.os.as_deref() == Some(os) {
if asset.id == id {
return Some(asset);
}
}
Expand Down
32 changes: 13 additions & 19 deletions src-tauri/src/xmrig_adapter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -61,17 +61,16 @@ impl XmrigAdapter {
}
pub fn spawn(
&self,
cache_dir: PathBuf,
logs_dir: PathBuf,
window: tauri::Window,
) -> Result<(Receiver<CpuMinerEvent>, XmrigInstance, XmrigHttpApiClient), anyhow::Error> {
let (_tx, rx) = tokio::sync::mpsc::channel(100);
let cache_dir = tauri::api::path::cache_dir()
.ok_or(anyhow::anyhow!("Failed to get cache dir"))?
.join("tari-universe");
let force_download = self.force_download;
let xmrig_shutdown = Shutdown::new();
let mut shutdown_signal = xmrig_shutdown.to_signal();
let mut args = self.node_connection.generate_args();
let xmrig_log_file = cache_dir.join("log").join("xmrig.log");
let xmrig_log_file = logs_dir.join("xmrig.log");
std::fs::create_dir_all(xmrig_log_file.parent().unwrap())?;
args.push(format!("--log-file={}", &xmrig_log_file.to_str().unwrap()));
args.push(format!("--http-port={}", self.http_api_port));
Expand Down Expand Up @@ -129,22 +128,17 @@ impl XmrigAdapter {
force_download: bool,
window: tauri::Window,
) -> Result<String, Error> {
dbg!(&cache_dir);
let latest_release = fetch_latest_release().await?;
let xmrig_dir = cache_dir
.join("com.tari.universe")
.join("xmrig")
.join(&latest_release.version);
let xmrig_dir = cache_dir.join("xmrig").join(&latest_release.version);
if force_download {
println!("Cleaning up xmrig dir");
let _ = fs::remove_dir_all(&xmrig_dir).await;
}
if !xmrig_dir.exists() {
println!("Latest version of xmrig doesn't exist");
println!("latest version is {}", latest_release.version);
let in_progress_dir = cache_dir
.join("com.tari.universe")
.join("xmrig")
.join("in_progress");
let in_progress_dir = cache_dir.join("xmrig").join("in_progress");
if in_progress_dir.exists() {
println!("Trying to delete dir {:?}", in_progress_dir);
match fs::remove_dir(&in_progress_dir).await {
Expand All @@ -156,10 +150,10 @@ impl XmrigAdapter {
}
}

let os_string = get_os_string();
info!(target: LOG_TARGET, "Downloading xmrig for {}", &os_string);
let id = get_os_string_id();
info!(target: LOG_TARGET, "Downloading xmrig for {}", &id);
let platform = latest_release
.get_asset(&os_string)
.get_asset(&id)
.ok_or(anyhow::anyhow!("Failed to get platform asset"))?;
println!("Downloading file");
println!("Downloading file from {}", &platform.url);
Expand Down Expand Up @@ -209,10 +203,10 @@ impl Drop for XmrigInstance {
}

#[allow(unreachable_code)]
fn get_os_string() -> String {
fn get_os_string_id() -> String {
#[cfg(target_os = "windows")]
{
return "windows-x64".to_string();
return "msvc-win64".to_string();
}

#[cfg(target_os = "macos")]
Expand All @@ -232,12 +226,12 @@ fn get_os_string() -> String {

#[cfg(target_os = "linux")]
{
return "linux-x64".to_string();
return "linux-static-x64".to_string();
}

#[cfg(target_os = "freebsd")]
{
return "freebsd-x64".to_string();
return "freebsd-static-x64".to_string();
}

panic!("Unsupported OS");
Expand Down
11 changes: 9 additions & 2 deletions src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ import useAppStateStore from './store/appStateStore.ts';
function App() {
const background = useUIStore((s) => s.background);
const view = useUIStore((s) => s.view);
const setView = useUIStore((s) => s.setView);
const setBackground = useUIStore((s) => s.setBackground);
const startupInitiated = useRef(false);
const setSetupDetails = useAppStateStore((s) => s.setSetupDetails);
const settingUpFinished = useAppStateStore((s) => s.settingUpFinished);
Expand All @@ -33,6 +35,8 @@ function App() {
setSetupDetails(payload.title, payload.progress);
if (payload.progress >= 1.0) {
settingUpFinished();
setView("mining");
setBackground("mining");
}
break;
default:
Expand All @@ -46,10 +50,13 @@ function App() {
);
if (!startupInitiated.current) {
startupInitiated.current = true;
invoke('setup_application').then((r) => {
console.log(r);
setView("setup");
setBackground("onboarding");
invoke('setup_application').catch((e) => {
console.error('Failed to setup application:', e);

});

}

return () => {
Expand Down