tauri-plugin-cache 0.1.6

Advanced disk caching solution for Tauri applications. Provides compression, TTL management, memory caching, automatic cleanup, and cross-platform support. Enhances data access performance and storage optimization.
name: Build Test

on:
  push:
    branches:
      - develop
    paths:
      - "**/*.rs"
      - "**/*.swift"
      - "**/*.kt"
      - "**/Cargo.toml"
      - "**/Package.swift"
      - "**/build.gradle.kts"
      - ".github/workflows/build.yml"
  pull_request:
    branches:
      - develop
    paths:
      - "**/*.rs"
      - "**/*.swift"
      - "**/*.kt"
      - "**/Cargo.toml"
      - "**/Package.swift"
      - "**/build.gradle.kts"
      - ".github/workflows/build.yml"

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  # Desktop builds (Windows, Linux, macOS)
  desktop:
    strategy:
      fail-fast: false
      matrix:
        include:
          - platform: ubuntu-latest
            target: x86_64-unknown-linux-gnu
          - platform: macos-latest
            target: aarch64-apple-darwin
          - platform: macos-latest
            target: x86_64-apple-darwin
          - platform: windows-latest
            target: x86_64-pc-windows-msvc

    runs-on: ${{ matrix.platform }}

    steps:
      - uses: actions/checkout@v4

      - name: Setup Bun
        uses: oven-sh/setup-bun@v2
        with:
          bun-version: latest

      - name: Install Rust stable
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: ${{ matrix.target }}

      - name: Install dependencies (Ubuntu)
        if: matrix.platform == 'ubuntu-latest'
        run: |

          sudo apt-get update
          sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev

      - uses: Swatinem/rust-cache@v2
        with:
          workspaces: |

            . -> target
            examples/tauri-app/src-tauri -> target

      - name: Build JS API
        run: |

          bun install
          bun run build

      - name: Install example dependencies
        working-directory: examples/tauri-app
        shell: bash
        run: |

          # Use npm on Windows to avoid bun ENOENT bug with local file: packages
          if [[ "$RUNNER_OS" == "Windows" ]]; then
            npm install
          else
            bun install
          fi

      - name: Build example app
        working-directory: examples/tauri-app
        shell: bash
        env:
          RUSTFLAGS: "-D warnings"
        run: |

          if [[ "$RUNNER_OS" == "Windows" ]]; then
            npm run tauri -- build --target ${{ matrix.target }} --debug
          else
            bun tauri build --target ${{ matrix.target }} --debug
          fi

  # Android build
  android:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4

      - name: Setup Bun
        uses: oven-sh/setup-bun@v2
        with:
          bun-version: latest

      - name: Install Rust stable
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: aarch64-linux-android,armv7-linux-androideabi,i686-linux-android,x86_64-linux-android

      - name: Set up JDK
        uses: actions/setup-java@v4
        with:
          java-version: "21"
          distribution: "temurin"

      - name: Setup Android SDK
        uses: android-actions/setup-android@v3

      - name: Setup Android NDK
        uses: nttld/setup-ndk@v1
        id: setup-ndk
        with:
          ndk-version: r27
          link-to-sdk: true

      - uses: Swatinem/rust-cache@v2
        with:
          workspaces: |

            . -> target
            examples/tauri-app/src-tauri -> target

      - name: Build JS API
        run: |

          bun install
          bun run build

      - name: Install example dependencies
        working-directory: examples/tauri-app
        run: bun install

      - name: Initialize Android project
        working-directory: examples/tauri-app
        run: bun tauri android init

      - name: Build Android app
        working-directory: examples/tauri-app
        env:
          NDK_HOME: ${{ steps.setup-ndk.outputs.ndk-path }}
          RUSTFLAGS: "-D warnings"
        run: bun tauri android build --target aarch64 --debug

  # iOS build
  ios:
    runs-on: macos-latest

    steps:
      - uses: actions/checkout@v4

      - name: Setup Bun
        uses: oven-sh/setup-bun@v2
        with:
          bun-version: latest

      - name: Install Rust stable
        uses: dtolnay/rust-toolchain@stable
        with:
          targets: aarch64-apple-ios,aarch64-apple-ios-sim,x86_64-apple-ios

      - uses: Swatinem/rust-cache@v2
        with:
          workspaces: |

            . -> target
            examples/tauri-app/src-tauri -> target

      - name: Build JS API
        run: |

          bun install
          bun run build

      - name: Install example dependencies
        working-directory: examples/tauri-app
        run: bun install

      - name: Initialize iOS project
        working-directory: examples/tauri-app
        run: bun tauri ios init

      - name: Build iOS app (Simulator)
        working-directory: examples/tauri-app
        env:
          RUSTFLAGS: "-D warnings"
        run: bun tauri ios build --target aarch64-sim --debug