mirror of
https://github.com/DioxusLabs/dioxus
synced 2024-11-26 14:10:20 +00:00
cda8bb24f1
* remove native and web features from dioxus-html * Fix downcasting web events * Fix desktop with tokio disabled
137 lines
4 KiB
Rust
137 lines
4 KiB
Rust
use std::{io::Write as _, path::PathBuf};
|
|
|
|
fn check_gnu() {
|
|
// WARN about wry support on windows gnu targets. GNU windows targets don't work well in wry currently
|
|
if std::env::var("CARGO_CFG_WINDOWS").is_ok()
|
|
&& std::env::var("CARGO_CFG_TARGET_ENV").unwrap() == "gnu"
|
|
&& !cfg!(feature = "gnu")
|
|
{
|
|
println!("cargo:warning=GNU windows targets have some limitations within Wry. Using the MSVC windows toolchain is recommended. If you would like to use continue using GNU, you can read https://github.com/wravery/webview2-rs#cross-compilation and disable this warning by adding the gnu feature to dioxus-desktop in your Cargo.toml")
|
|
}
|
|
|
|
// To prepare for a release, we add extra examples to desktop for doc scraping and copy assets from the workspace to make those examples compile
|
|
if option_env!("DIOXUS_RELEASE").is_some() {
|
|
// Append EXAMPLES_TOML to the cargo.toml
|
|
let cargo_toml = std::fs::OpenOptions::new()
|
|
.append(true)
|
|
.open("Cargo.toml")
|
|
.unwrap();
|
|
let mut write = std::io::BufWriter::new(cargo_toml);
|
|
write.write_all(EXAMPLES_TOML.as_bytes()).unwrap();
|
|
|
|
// Copy the assets from the workspace to the examples directory
|
|
let crate_dir = PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap());
|
|
let workspace_dir = crate_dir.parent().unwrap().parent().unwrap();
|
|
let workspace_assets_dir = workspace_dir.join("examples").join("assets");
|
|
let desktop_assets_dir = PathBuf::from("examples").join("assets");
|
|
std::fs::create_dir_all(&desktop_assets_dir).unwrap();
|
|
// move all files from the workspace assets dir to the desktop assets dir
|
|
for entry in std::fs::read_dir(workspace_assets_dir).unwrap() {
|
|
let entry = entry.unwrap();
|
|
let path = entry.path();
|
|
if path.is_file() {
|
|
std::fs::copy(&path, desktop_assets_dir.join(path.file_name().unwrap())).unwrap();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
fn compile_ts() {
|
|
// If any TS files change, re-run the build script
|
|
lazy_js_bundle::LazyTypeScriptBindings::new()
|
|
.with_watching("./src/ts")
|
|
.with_binding("./src/ts/native_eval.ts", "./src/js/native_eval.js")
|
|
.run();
|
|
}
|
|
|
|
fn main() {
|
|
check_gnu();
|
|
compile_ts();
|
|
}
|
|
|
|
const EXAMPLES_TOML: &str = r#"
|
|
# Most of the examples live in the workspace. We include some here so that docs.rs can scrape our examples for better inline docs
|
|
[[example]]
|
|
name = "video_stream"
|
|
path = "../../examples/video_stream.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "suspense"
|
|
path = "../../examples/suspense.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "calculator_mutable"
|
|
path = "../../examples/calculator_mutable.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "custom_html"
|
|
path = "../../examples/custom_html.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "custom_menu"
|
|
path = "../../examples/custom_menu.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "errors"
|
|
path = "../../examples/errors.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "future"
|
|
path = "../../examples/future.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "hydration"
|
|
path = "../../examples/hydration.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "multiwindow"
|
|
path = "../../examples/multiwindow.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "overlay"
|
|
path = "../../examples/overlay.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "popup"
|
|
path = "../../examples/popup.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "read_size"
|
|
path = "../../examples/read_size.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "shortcut"
|
|
path = "../../examples/shortcut.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "streams"
|
|
path = "../../examples/streams.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "window_event"
|
|
path = "../../examples/window_event.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "window_focus"
|
|
path = "../../examples/window_focus.rs"
|
|
doc-scrape-examples = true
|
|
|
|
[[example]]
|
|
name = "window_zoom"
|
|
path = "../../examples/window_zoom.rs"
|
|
doc-scrape-examples = true"#;
|