// erpnext CI — revision 3 (docker-compose standalone, explicit paths)
pipeline {
  agent any

  options {
    timestamps()
    disableConcurrentBuilds()
    skipDefaultCheckout(false)
  }

  environment {
    CI_BIN = "${WORKSPACE}/.ci-bin"
    DOCKER_BIN = "${WORKSPACE}/.ci-bin/docker"
    COMPOSE_BIN = "${WORKSPACE}/.ci-bin/docker-compose"
    COMPOSE_FILE = "${WORKSPACE}/dist/docker-compose.coolify.yml"
  }

  stages {
    stage('Verify checkout') {
      steps {
        sh 'echo "CI revision 3 | commit $(git rev-parse --short HEAD)"'
        sh 'test -f Jenkinsfile && test -f docker-compose.yml'
      }
    }

    stage('Production readiness') {
      steps {
        sh 'chmod +x scripts/ci/*.sh'
        sh 'bash scripts/ci/ci-readiness.sh .'
        sh 'bash scripts/ci/validate-docker-compose.sh .'
      }
    }

    stage('Install CI tools') {
      steps {
        sh '''
          set -euo pipefail
          mkdir -p .ci-bin dist

          if [ ! -x .ci-bin/docker ]; then
            echo "Downloading docker CLI..."
            curl -fsSL "https://download.docker.com/linux/static/stable/x86_64/docker-27.4.1.tgz" \
              | tar xz --strip-components=1 -C .ci-bin docker/docker
            chmod +x .ci-bin/docker
          fi

          if [ ! -x .ci-bin/docker-compose ]; then
            echo "Downloading docker-compose..."
            curl -fsSL "https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-linux-x86_64" \
              -o .ci-bin/docker-compose
            chmod +x .ci-bin/docker-compose
          fi

          .ci-bin/docker version
          .ci-bin/docker-compose version
        '''
      }
    }

    stage('Compose smoke') {
      steps {
        sh '''
          set -euo pipefail
          sed '/exclude_from_hc:/d' docker-compose.yml > dist/docker-compose.coolify.yml
          .ci-bin/docker-compose -f dist/docker-compose.coolify.yml config -q
          VERSION="$(grep -E '^ERPNEXT_VERSION=' example.env | cut -d= -f2)"
          .ci-bin/docker pull "frappe/erpnext:${VERSION}"
          echo "frappe/erpnext:${VERSION} OK"
        '''
      }
    }
  }

  post {
    success {
      archiveArtifacts artifacts: 'dist/docker-compose.coolify.yml', fingerprint: true, onlyIfSuccessful: true
    }
  }
}
