name: Deploy umbot project

on:
    push:
        branches: [main]

jobs:
    deploy:
        runs-on: ubuntu-latest

        steps:
            - uses: actions/checkout@v4

            - name: Setup Node.js
              uses: actions/setup-node@v4
              with:
                  node-version: '24'
                  cache: 'npm'

            - name: Install dependencies
              run: npm ci

            - name: Build project
              run: npm run build

            - name: Log in to Docker Hub
              uses: docker/login-action@v3
              with:
                  username: ${{ secrets.DOCKERHUB_USERNAME }}
                  password: ${{ secrets.DOCKERHUB_TOKEN }}

            - name: Build and push Docker image
              uses: docker/build-push-action@v5
              with:
                  context: .
                  push: true
                  tags: ${{ secrets.DOCKERHUB_USERNAME }}/my-umbot-bot:latest

            - name: Deploy to server via SSH
              uses: appleboy/ssh-action@v1
              with:
                  host: ${{ secrets.HOST }}
                  username: ${{ secrets.USERNAME }}
                  key: ${{ secrets.SSH_KEY }}
                  script: |
                      docker stop my-umbot-bot || true
                      docker rm my-umbot-bot || true
                      docker pull ${{ secrets.DOCKERHUB_USERNAME }}/my-umbot-bot:latest
                      docker run -d \
                        --name my-umbot-bot \
                        -p 3000:3000 \
                        -e YANDEX_TOKEN=${{ secrets.YANDEX_TOKEN }} \
                        -e TELEGRAM_TOKEN=${{ secrets.TELEGRAM_TOKEN }} \
                        -e VK_TOKEN=${{ secrets.VK_TOKEN }} \
                        -e VK_CONFIRMATION_TOKEN=${{ secrets.VK_CONFIRMATION_TOKEN }} \
                        -e VIBER_TOKEN=${{ secrets.VIBER_TOKEN }} \
                        -e MARUSIA_TOKEN=${{ secrets.MARUSIA_TOKEN }} \
                        -e MAX_TOKEN=${{ secrets.MAX_TOKEN }} \
                        ${{ secrets.DOCKERHUB_USERNAME }}/my-umbot-bot:latest
