pipeline {
  agent any

  environment {
    DEPLOY_HOST = "192.168.178.180"
    DEPLOY_USER = "ubuntu"
    APP_DIR = "/srv/mitm-webserver"
  }

  stages {
    stage('Checkout') {
      steps {
        git branch: 'main',
            url: 'http://192.168.178.96:3000/marcus/mitm-webserver.git'
      }
    }

    stage('Build Frontend') {
      steps {
        dir('frontend') {
          sh 'npm ci'
          sh 'npm run build'
        }
      }
    }

    stage('Prepare Backend') {
      steps {
        dir('backend') {
          sh '''
            python3 -m venv venv
            ./venv/bin/pip install --upgrade pip
            ./venv/bin/pip install -r requirements.txt
          '''
        }
      }
    }

    stage('Deploy to VM') {
      steps {
        withCredentials([usernamePassword(
            credentialsId: 'deploy-pass-id',
            usernameVariable: 'USER',
            passwordVariable: 'PASS'
        )]) {
          sh '''
            # make sure sshpass exists
            if ! command -v sshpass >/dev/null 2>&1; then
              sudo apt-get update -y && sudo apt-get install -y sshpass
            fi

            echo "Testing SSH connection..."
            sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 \
              $USER@$DEPLOY_HOST "echo Connected OK"

            echo "Uploading frontend..."
            sshpass -p "$PASS" rsync -avz --delete \
              -e "ssh -o StrictHostKeyChecking=no" \
              frontend/dist/ $USER@$DEPLOY_HOST:$APP_DIR/frontend/dist/

            echo "Uploading backend..."
            sshpass -p "$PASS" rsync -avz --delete \
              -e "ssh -o StrictHostKeyChecking=no" \
              backend/ $USER@$DEPLOY_HOST:$APP_DIR/backend/

            echo "Restarting backend..."
            sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no \
              $USER@$DEPLOY_HOST "
                cd $APP_DIR/backend &&
                source venv/bin/activate &&
                sudo systemctl restart mitm-webserver-backend.service
              "
          '''
        }
      }
    }
  }

  post {
    success { echo '✅ mitm-webserver deployed successfully!' }
    failure { echo '❌ Deployment failed. Check logs for details.' }
  }
}
