diff --git a/runtime/src/main.rs b/runtime/src/main.rs index 1aa71fcd..d600db36 100644 --- a/runtime/src/main.rs +++ b/runtime/src/main.rs @@ -10,39 +10,12 @@ use mindwork_ai_studio::certificate::{generate_certificate}; use mindwork_ai_studio::dotnet::start_dotnet_server; use mindwork_ai_studio::environment::is_dev; use mindwork_ai_studio::log::init_logging; -use mindwork_ai_studio::metadata::{MetaData, META_DATA}; +use mindwork_ai_studio::metadata::MetaData; use mindwork_ai_studio::runtime_api::start_runtime_api; #[tokio::main] async fn main() { - let metadata = include_str!("../../metadata.txt"); - let mut metadata_lines = metadata.lines(); - let app_version = metadata_lines.next().unwrap(); - let build_time = metadata_lines.next().unwrap(); - let build_number = metadata_lines.next().unwrap(); - let dotnet_sdk_version = metadata_lines.next().unwrap(); - let dotnet_version = metadata_lines.next().unwrap(); - let rust_version = metadata_lines.next().unwrap(); - let mud_blazor_version = metadata_lines.next().unwrap(); - let tauri_version = metadata_lines.next().unwrap(); - let app_commit_hash = metadata_lines.next().unwrap(); - let architecture = metadata_lines.next().unwrap(); - let pdfium_version = metadata_lines.next().unwrap(); - - let metadata = MetaData { - architecture: architecture.to_string(), - app_commit_hash: app_commit_hash.to_string(), - app_version: app_version.to_string(), - build_number: build_number.to_string(), - build_time: build_time.to_string(), - dotnet_sdk_version: dotnet_sdk_version.to_string(), - dotnet_version: dotnet_version.to_string(), - mud_blazor_version: mud_blazor_version.to_string(), - rust_version: rust_version.to_string(), - tauri_version: tauri_version.to_string(), - }; - - *META_DATA.lock().unwrap() = Some(metadata); + let metadata = MetaData::init_from_string(include_str!("../../metadata.txt")); init_logging(); info!("Starting MindWork AI Studio:"); @@ -50,14 +23,18 @@ async fn main() { let working_directory = std::env::current_dir().unwrap(); info!(".. The working directory is: '{working_directory:?}'"); - info!(".. Version: v{app_version} (commit {app_commit_hash}, build {build_number}, {architecture})"); - info!(".. Build time: {build_time}"); - info!(".. .NET SDK: v{dotnet_sdk_version}"); - info!(".. .NET: v{dotnet_version}"); - info!(".. Rust: v{rust_version}"); - info!(".. MudBlazor: v{mud_blazor_version}"); - info!(".. Tauri: v{tauri_version}"); - info!(".. PDFium: v{pdfium_version}"); + info!(".. Version: v{app_version} (commit {hash}, build {build_num}, {architecture})", + app_version = metadata.app_version, + hash = metadata.app_commit_hash, + build_num = metadata.build_number, + architecture = metadata.architecture); + info!(".. Build time: {build_time}", build_time = metadata.build_time); + info!(".. .NET SDK: v{sdk_version}", sdk_version = metadata.dotnet_sdk_version); + info!(".. .NET: v{dotnet_version}", dotnet_version = metadata.dotnet_version); + info!(".. Rust: v{rust_version}", rust_version = metadata.rust_version); + info!(".. MudBlazor: v{mud_blazor_version}", mud_blazor_version = metadata.mud_blazor_version); + info!(".. Tauri: v{tauri_version}", tauri_version = metadata.tauri_version); + info!(".. PDFium: v{pdfium_version}", pdfium_version = metadata.pdfium_version); if is_dev() { warn!("Running in development mode."); diff --git a/runtime/src/metadata.rs b/runtime/src/metadata.rs index 29e38adc..426e2b66 100644 --- a/runtime/src/metadata.rs +++ b/runtime/src/metadata.rs @@ -1,5 +1,5 @@ -use std::sync::Mutex; use once_cell::sync::Lazy; +use std::sync::Mutex; pub static META_DATA: Lazy>> = Lazy::new(|| Mutex::new(None)); @@ -15,4 +15,46 @@ pub struct MetaData { pub tauri_version: String, pub app_commit_hash: String, pub architecture: String, + pub pdfium_version: String, +} + +impl MetaData { + /// Creates a new instance of `MetaData` from the given metadata string. + pub fn init_from_string(metadata: &str) -> Self { + + // When the metadata is already initialized, return the existing instance: + if let Some(metadata) = META_DATA.lock().unwrap().as_ref() { + return metadata.clone(); + } + + let mut metadata_lines = metadata.lines(); + let app_version = metadata_lines.next().unwrap(); + let build_time = metadata_lines.next().unwrap(); + let build_number = metadata_lines.next().unwrap(); + let dotnet_sdk_version = metadata_lines.next().unwrap(); + let dotnet_version = metadata_lines.next().unwrap(); + let rust_version = metadata_lines.next().unwrap(); + let mud_blazor_version = metadata_lines.next().unwrap(); + let tauri_version = metadata_lines.next().unwrap(); + let app_commit_hash = metadata_lines.next().unwrap(); + let architecture = metadata_lines.next().unwrap(); + let pdfium_version = metadata_lines.next().unwrap(); + + let metadata = MetaData { + architecture: architecture.to_string(), + app_commit_hash: app_commit_hash.to_string(), + app_version: app_version.to_string(), + build_number: build_number.to_string(), + build_time: build_time.to_string(), + dotnet_sdk_version: dotnet_sdk_version.to_string(), + dotnet_version: dotnet_version.to_string(), + mud_blazor_version: mud_blazor_version.to_string(), + rust_version: rust_version.to_string(), + tauri_version: tauri_version.to_string(), + pdfium_version: pdfium_version.to_string(), + }; + + *META_DATA.lock().unwrap() = Some(metadata.clone()); + metadata + } } \ No newline at end of file