From e27dfe464e9d28b407f4046c909e6aea61062b25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= <8672791+mockersf@users.noreply.github.com> Date: Tue, 21 Dec 2021 19:27:33 +0100 Subject: [PATCH 01/14] deploy examples on website in wasm --- .github/workflows/ci.yml | 3 + .gitignore | 1 + generate-wasm-examples/.gitignore | 1 + .../generate_wasm_examples.sh | 67 +++++++++++++++++++ templates/example.html | 14 ++++ templates/examples.html | 66 ++++++++++++++++++ 6 files changed, 152 insertions(+) create mode 100644 generate-wasm-examples/.gitignore create mode 100755 generate-wasm-examples/generate_wasm_examples.sh create mode 100644 templates/example.html create mode 100644 templates/examples.html diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd50566d62..0b63e46fe6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,6 +15,9 @@ jobs: - name: "Build Bevy Error Codes" run: cd generate-errors && ./generate_errors.sh + - name: "Build Bevy Examples" + run: cd generate-wasm-examples && ./generate_wasm_examples.sh + - name: "Build website" uses: shalzz/zola-deploy-action@master env: diff --git a/.gitignore b/.gitignore index 110de283d1..c18a0ec267 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ public .idea/ content/assets content/learn/errors +content/examples diff --git a/generate-wasm-examples/.gitignore b/generate-wasm-examples/.gitignore new file mode 100644 index 0000000000..d73c3e7c7f --- /dev/null +++ b/generate-wasm-examples/.gitignore @@ -0,0 +1 @@ +bevy/ diff --git a/generate-wasm-examples/generate_wasm_examples.sh b/generate-wasm-examples/generate_wasm_examples.sh new file mode 100755 index 0000000000..dc61ee4240 --- /dev/null +++ b/generate-wasm-examples/generate_wasm_examples.sh @@ -0,0 +1,67 @@ +#!/bin/sh + +git init bevy +cd bevy +git remote add origin https://github.com/mockersf/bevy +git pull --depth=1 origin my-webgl2-2 + +# remove markdown files from assets so that they don't get picked up by Zola +find assets -type f -name '*.md' -exec rm {} + + +# setting the default width of a window to 1024 +sed -i.bak 's/width: 1280.,/width: 1024.,/' crates/bevy_window/src/window.rs + +# setting a canvas by default to help with integration +sed -i.bak 's/canvas: None,/canvas: Some("#bevy".to_string()),/' crates/bevy_window/src/window.rs + +# disable msaa on any example that may set it +sed -i.bak 's/Msaa { samples: 4 }/Msaa { samples: 1 }/' examples/*/*.rs + + +function add_category() { + category=$1 + category_path=`echo $category | tr '[:upper:]' '[:lower:]'` + example_weight=0 + + mkdir ../../content/examples/$category_path + + + for example in ${@:2} + do + echo "building $category / $example" + mkdir ../../content/examples/$category_path/$example + cp -r assets ../../content/examples/$category_path/$example + # need to disable default features to not have bevy_audio + cargo build --release --target wasm32-unknown-unknown --no-default-features --features "render,bevy_winit,png" --example $example + wasm-bindgen --out-dir ../../content/examples/$category_path/$example --no-typescript --target web target/wasm32-unknown-unknown/release/examples/$example.wasm + echo "+++ +title = \"$example\" +template = \"example.html\" +weight = $example_weight ++++" > ../../content/examples/$category_path/$example/index.md + ((example_weight++)) + done + + echo "+++ +title = \"$category\" +sort_by = \"weight\" +weight = $category_weight ++++" > ../../content/examples/$category_path/_index.md + ((category_weight++)) +} + +mkdir ../../content/examples + +echo "+++ +title = \"Bevy Examples in WebGL2\" +template = \"examples.html\" +sort_by = \"weight\" ++++" > ../../content/examples/_index.md + +category_weight=0 + +add_category 2d sprite text2d +add_category 3d 3d_scene lighting load_gltf parenting pbr texture +add_category UI button ui +add_category Games breakout alien_cake_addict +add_category Tools bevymark diff --git a/templates/example.html b/templates/example.html new file mode 100644 index 0000000000..48e8a06bf4 --- /dev/null +++ b/templates/example.html @@ -0,0 +1,14 @@ +{% extends "base.html" %} + +{% block content %} +