From 426a342700762daede62bc0b395ba0ca2416c748 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 10 Oct 2023 10:26:16 -0500 Subject: [PATCH] add logs when the desktop or fullstack application is collecting assets --- packages/desktop/src/collect_assets.rs | 7 +++ packages/fullstack/Cargo.toml | 4 ++ .../fullstack/src/adapters/axum_adapter.rs | 3 + .../fullstack/src/adapters/salvo_adapter.rs | 3 + .../fullstack/src/adapters/warp_adapter.rs | 3 + packages/fullstack/src/collect_assets.rs | 60 +++++++++++++++++++ packages/fullstack/src/lib.rs | 1 + packages/web/src/lib.rs | 1 + 8 files changed, 82 insertions(+) create mode 100644 packages/fullstack/src/collect_assets.rs diff --git a/packages/desktop/src/collect_assets.rs b/packages/desktop/src/collect_assets.rs index d0e18d9a8..aa9050a75 100644 --- a/packages/desktop/src/collect_assets.rs +++ b/packages/desktop/src/collect_assets.rs @@ -12,6 +12,10 @@ pub fn copy_assets() { ) ))] { + // The CLI will copy assets to the current working directory + if std::env::var_os("DIOXUS_ACTIVE").is_some() { + return; + } use manganis_cli_support::AssetManifest; use manganis_cli_support::AssetManifestExt; use manganis_cli_support::Config; @@ -21,6 +25,7 @@ pub fn copy_assets() { let asset_location = PathBuf::from(asset_location); let _ = std::fs::remove_dir_all(&asset_location); + println!("Finding assets... (Note: if you run a dioxus desktop application with the CLI. This process will be significantly faster.)"); let manifest = AssetManifest::load(); let has_assets = manifest .packages() @@ -31,6 +36,8 @@ pub fn copy_assets() { println!("Copying and optimizing assets..."); manifest.copy_static_assets_to(&asset_location).unwrap(); println!("Copied assets to {}", asset_location.display()); + } else { + println!("No assets found"); } } #[cfg(not(all( diff --git a/packages/fullstack/Cargo.toml b/packages/fullstack/Cargo.toml index 8ab213e78..9051b3994 100644 --- a/packages/fullstack/Cargo.toml +++ b/packages/fullstack/Cargo.toml @@ -70,6 +70,10 @@ dioxus-hot-reload = { workspace = true } [target.'cfg(target_arch = "wasm32")'.dependencies] web-sys = { version = "0.3.61", features = ["Window", "Document", "Element", "HtmlDocument", "Storage", "console"] } +[target.'cfg(any(target_os = "windows",target_os = "macos",target_os = "linux",target_os = "dragonfly", target_os = "freebsd", target_os = "netbsd", target_os = "openbsd"))'.dependencies] +# This is only for debug mode, and it appears mobile does not support some packages this uses +manganis-cli-support = { git = "https://github.com/DioxusLabs/collect-assets", features = ["webp", "html"] } + [features] default = ["hot-reload", "default-tls"] router = ["dioxus-router"] diff --git a/packages/fullstack/src/adapters/axum_adapter.rs b/packages/fullstack/src/adapters/axum_adapter.rs index 95d9ee6cd..baa10e3a5 100644 --- a/packages/fullstack/src/adapters/axum_adapter.rs +++ b/packages/fullstack/src/adapters/axum_adapter.rs @@ -277,6 +277,9 @@ where fn serve_static_assets(mut self, assets_path: impl Into) -> Self { use tower_http::services::{ServeDir, ServeFile}; + // Copy over any assets we find + crate::collect_assets::copy_assets(); + let assets_path = assets_path.into(); // Serve all files in dist folder except index.html diff --git a/packages/fullstack/src/adapters/salvo_adapter.rs b/packages/fullstack/src/adapters/salvo_adapter.rs index 674722665..84894bbda 100644 --- a/packages/fullstack/src/adapters/salvo_adapter.rs +++ b/packages/fullstack/src/adapters/salvo_adapter.rs @@ -241,6 +241,9 @@ impl DioxusRouterExt for Router { } fn serve_static_assets(mut self, assets_path: impl Into) -> Self { + // Copy over any assets we find + crate::collect_assets::copy_assets(); + let assets_path = assets_path.into(); // Serve all files in dist folder except index.html diff --git a/packages/fullstack/src/adapters/warp_adapter.rs b/packages/fullstack/src/adapters/warp_adapter.rs index 316d70e56..682063084 100644 --- a/packages/fullstack/src/adapters/warp_adapter.rs +++ b/packages/fullstack/src/adapters/warp_adapter.rs @@ -187,6 +187,9 @@ pub fn serve_dioxus_application