diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1c8bd5a..6d35be1 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -14,33 +14,46 @@ jobs: steps: - uses: actions/checkout@v2 with: - fetch-depth: 2 + fetch-depth: 2 # Need history to check for changes + + - name: Check for Rust changes + id: check_changes + run: | + # Check if any Rust files or Cargo.toml have changed + if git diff --name-only HEAD^ HEAD | grep -qE '\.rs$|Cargo.toml|Cargo.lock'; then + echo "rust_changed=true" >> $GITHUB_OUTPUT + else + echo "rust_changed=false" >> $GITHUB_OUTPUT + fi - name: Install Rust + if: steps.check_changes.outputs.rust_changed == 'true' uses: actions-rs/toolchain@v1 with: toolchain: stable target: wasm32-unknown-unknown override: true - - - name: Add WASM target - run: rustup target add wasm32-unknown-unknown - - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install -y pkg-config libudev-dev libasound2-dev - name: Install wasm-bindgen-cli + if: steps.check_changes.outputs.rust_changed == 'true' run: cargo install -f wasm-bindgen-cli --version 0.2.95 - name: Create deployment directory run: mkdir -p dist - - name: Build WASM (with verbose output) + - name: Build WASM + if: steps.check_changes.outputs.rust_changed == 'true' + run: | + cargo build --release --target wasm32-unknown-unknown + wasm-bindgen --out-dir ./dist/out/ --target web ./target/wasm32-unknown-unknown/release/bevy_compute_shader.wasm + + - name: Copy existing WASM files + if: steps.check_changes.outputs.rust_changed == 'false' run: | - cargo build --release --target wasm32-unknown-unknown -v - wasm-bindgen --out-dir ./dist/out/ --target web ./target/wasm32-unknown-unknown/release/bevy_vaporwave.wasm + # Get the files from the previous gh-pages build + git fetch origin gh-pages + git checkout origin/gh-pages -- out + cp -r out dist/ - name: Copy web files run: |