name: Cache Dependencies

on:
  workflow_dispatch:
  push:
    branches: [ main ]

jobs:
  test:

    runs-on: ubuntu-20.04

    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-java@v1
        with:
          java-version: '11.x'

      - name: Flutter action
        uses: subosito/flutter-action@v1
        with:
          flutter-version: '3.10.x'
          channel: stable

      - name: Install package dependencies
        run: sudo apt-get install -y curl unzip automake build-essential file pkg-config git python libtool libtinfo5 cmake clang

      - name: Execute Build and Setup Commands
        run: |
          sudo mkdir -p /opt/android
          sudo chown $USER /opt/android
          cd /opt/android
          git clone https://github.com/cake-tech/cake_wallet.git --branch main
          cd cake_wallet/scripts/android/
          ./install_ndk.sh
          source ./app_env.sh cakewallet
          ./app_config.sh

      - name: Cache Externals
        id: cache-externals
        uses: actions/cache@v3
        with:
          path: |
            /opt/android/cake_wallet/cw_haven/android/.cxx
            /opt/android/cake_wallet/cw_haven/ios/External
            /opt/android/cake_wallet/cw_monero/android/.cxx
            /opt/android/cake_wallet/cw_monero/ios/External
            /opt/android/cake_wallet/cw_shared_external/ios/External
          key: ${{ hashFiles('**/build_monero.sh', '**/build_haven.sh', '**/monero_api.cpp') }}

      - if: ${{ steps.cache-externals.outputs.cache-hit != 'true' }}
        name: Generate Externals
        run: |
          cd /opt/android/cake_wallet/scripts/android/
          source ./app_env.sh cakewallet
          ./build_all.sh
          ./copy_monero_deps.sh