name: Build Release Package

on:
  push:
    branches:
      - 2.x

jobs:
  build-package:
    name: Build final dist package
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20

      - name: Try to build the assets
        run: |
          npm ci
          npm run production
          rm -rf node_modules

      - uses: shivammathur/setup-php@v2
        with:
          php-version: 8.1
          extensions: mbstring

      - id: composer-cache
        run: echo "::set-output name=dir::$(composer config cache-files-dir)"

      - uses: actions/cache@v4
        with:
          path: ${{ steps.composer-cache.outputs.dir }}
          key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
          restore-keys: ${{ runner.os }}-composer-

      - name: Prepare the environment
        run: cp .env.example .env && touch database/database.sqlite

      - name: Validate composer.json and composer.lock
        run: composer validate

      - name: Install dependencies
        run: composer install --prefer-dist --no-progress --no-suggest --no-dev

      - name: Publish package configuration
        run: 'php artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider"'

      - name: Remove .env file
        run: rm .env

      - uses: thedoctor0/zip-release@master
        with:
          filename: linkace.zip
          exclusions: '*.git*'

      - uses: actions/upload-artifact@v4
        with:
          name: linkace-package
          retention-days: 7
          path: linkace.zip

  build-package-docker:
    name: Build final dist package for Docker setup
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Rename files
        run: |
          mv .env.docker.production .env
          chmod 0666 .env
          mv docker-compose.production.yml docker-compose.yml

      - uses: actions/upload-artifact@v4
        with:
          name: linkace-docker
          retention-days: 7
          path: |
            docker-compose.yml
            .env
            LICENSE.md
            README.md
