name: MacOS Kernel Build

#Запускаем только кнопкой "Run workflow" в Actions -> Build MacOS
on:
  workflow_dispatch:
  push:
    branches:
      - main
    paths:
      - 'lib/**'  

jobs:
  build:
    runs-on: macos
    steps:
      - name: Checkout code
        uses: actions/checkout@v6
      
      - name: Install Node.js
        uses: actions/setup-node@v6
        with:
          node-version: '22'

      # Кэш npm (тарифы грузятся из ~/.npm-cache на macOS)
      - name: Cache npm cache
        uses: actions/cache@v5
        with:
          path: ${{ env.HOME }}/.npm-cache
          key: ${{ runner.os }}-npm-${{ hashFiles('**/package.json') }}
          restore-keys: |
            ${{ runner.os }}-npm-
          if-no-files-found: ignore
      # Кэш для electron-builder
      - name: Cache electron-builder
        uses: actions/cache@v5
        with:
          path: |
            ${{ env.HOME }}/Library/Caches/electron-builder
            ${{ env.HOME }}/Library/Caches/electron
          key: ${{ runner.os }}-electron-builder-${{ hashFiles('**/electron-builder.yml') }}
          restore-keys: |
            ${{ runner.os }}-electron-builder-
          if-no-files-found: ignore
      - name: NPM offline setup
        shell: bash
        run: |
          npm config set cache "$HOME/.npm-cache" --global
          npm config set prefer-offline true --global
      - name: Install npm dependencies
        run: npm install --prefer-offline --no-audit --no-fund
      - name: Build the application
        run: npm run kernel:mac
      #Загружаем на удаленный сервер по SSH используя scp и пароль из секретов
      #Загружаем из двух папок dist/builds/darwin/x64 и dist/builds/darwin/arm64, так как electron-builder может создавать разные файлы для разных архитектур
      #Вызываем файл sshupload.sh и передаем ему параметры из секретов, чтобы не хранить пароль в открытом виде в workflow
      - name: Upload to SSH using scp
        shell: bash
        run: |
          chmod +x "$GITHUB_WORKSPACE/.gitea/workflows/sshupload.sh"
          sh "$GITHUB_WORKSPACE/.gitea/workflows/sshupload.sh" \
            -l "$GITHUB_WORKSPACE/dist/builds/darwin/x64/Rosetta-*.pkg" \
            -r "${{ secrets.SDU_SSH_KERNEL }}/darwin/x64" \
            -s "${{ secrets.SDU_SSH_HOST }}" \
            -u "${{ secrets.SDU_SSH_USERNAME }}" \
            -p '${{ secrets.SDU_SSH_PASSWORD }}'
          sh "$GITHUB_WORKSPACE/.gitea/workflows/sshupload.sh" \
            -l "$GITHUB_WORKSPACE/dist/builds/darwin/arm64/Rosetta-*.pkg" \
            -r "${{ secrets.SDU_SSH_KERNEL }}/darwin/arm64" \
            -s "${{ secrets.SDU_SSH_HOST }}" \
            -u "${{ secrets.SDU_SSH_USERNAME }}" \
            -p '${{ secrets.SDU_SSH_PASSWORD }}'
          