diff --git a/crates/radicle-tauri/build.rs b/crates/radicle-tauri/build.rs index d860e1e6a..6a57222bc 100644 --- a/crates/radicle-tauri/build.rs +++ b/crates/radicle-tauri/build.rs @@ -1,3 +1,12 @@ +use std::process::Command; + fn main() { + let output = Command::new("git") + .args(&["rev-parse", "--short", "HEAD"]) + .output() + .expect("failed to execute git"); + let git_head = String::from_utf8(output.stdout).unwrap(); + println!("cargo:rustc-env=GIT_HEAD={}", git_head); + tauri_build::build() } diff --git a/crates/radicle-tauri/src/commands/startup.rs b/crates/radicle-tauri/src/commands/startup.rs index 22bdc96ea..b6898c7da 100644 --- a/crates/radicle-tauri/src/commands/startup.rs +++ b/crates/radicle-tauri/src/commands/startup.rs @@ -1,16 +1,47 @@ use std::collections::BTreeMap; +use serde::Serialize; +use tauri::{AppHandle, Emitter, Manager}; + use radicle::cob::cache::COBS_DB_FILE; use radicle::identity::RepoId; use radicle::node::{Handle, Node, NOTIFICATIONS_DB_FILE}; use radicle::storage::ReadStorage; -use tauri::{AppHandle, Emitter, Manager}; use radicle_types::config::Config; use radicle_types::error::Error; use radicle_types::traits::Profile; use radicle_types::{domain, AppState}; +pub struct Version { + pub version: String, + pub head: String, +} + +impl Serialize for Version { + fn serialize(&self, serializer: S) -> Result + where + S: serde::Serializer, + { + serializer.serialize_str(&format!("{} ({})", self.version, self.head)) + } +} + +#[tauri::command] +pub(crate) fn version(app: AppHandle) -> Result { + let version = app + .config() + .version + .clone() + .expect("The build version has not been set."); + pub const GIT_HEAD: &str = env!("GIT_HEAD"); + + Ok(Version { + version, + head: GIT_HEAD.to_string(), + }) +} + #[tauri::command] pub(crate) fn startup(app: AppHandle) -> Result { let profile = radicle::Profile::load()?; diff --git a/crates/radicle-tauri/src/lib.rs b/crates/radicle-tauri/src/lib.rs index bc735741a..54b4a943f 100644 --- a/crates/radicle-tauri/src/lib.rs +++ b/crates/radicle-tauri/src/lib.rs @@ -57,6 +57,7 @@ pub fn run() { repo::repo_by_id, repo::repo_count, startup::startup, + startup::version, thread::create_issue_comment, thread::create_patch_comment, ]) diff --git a/crates/radicle-tauri/tauri.conf.json b/crates/radicle-tauri/tauri.conf.json index 2b4484d50..a237c54aa 100644 --- a/crates/radicle-tauri/tauri.conf.json +++ b/crates/radicle-tauri/tauri.conf.json @@ -1,8 +1,8 @@ { "productName": "Radicle", "mainBinaryName": "radicle-desktop", - "version": "0.2.0", "identifier": "xyz.radicle.desktop", + "version": "0.2.0", "build": { "beforeDevCommand": "npm start", "devUrl": "http://localhost:1420", diff --git a/src/components/Settings.svelte b/src/components/Settings.svelte index e8bbe480b..df21e6968 100644 --- a/src/components/Settings.svelte +++ b/src/components/Settings.svelte @@ -1,8 +1,12 @@