pipeline {
  agent { label 'djb-vm' }

  triggers {
    pollSCM('H/10 * * * *')
  }

  options {
    timestamps()
    disableConcurrentBuilds()
    buildDiscarder(logRotator(numToKeepStr: '20', artifactNumToKeepStr: '20'))
  }

  environment {
    JAVA_HOME = '/apps/opts/jdk8'
    GRADLE_HOME = '/apps/opts/gradle-8.7'
    GRADLE_USER_HOME = '/apps/opts/gradle-home'
    PATH = "/apps/opts/jdk8/bin:/apps/opts/gradle-8.7/bin:/apps/opts/bin:${env.PATH}"
    GIT_SSH_COMMAND = 'ssh -o StrictHostKeyChecking=accept-new'
  }

  stages {
    stage('Checkout') {
      steps {
        checkout scm
      }
    }

    stage('Verify toolchain') {
      steps {
        sh '''
          set -eu
          java -version
          gradle --version
        '''
      }
    }

    stage('Build JAR') {
      steps {
        sh 'gradle clean build --no-daemon'
      }
    }

    stage('Smoke test') {
      steps {
        sh '''
          set -eu
          echo "---- default (bypass) mode ----"
          java -cp build/libs/damo-manager.jar com.eactive.ext.djb.DamoManager
          echo "---- fake mode (-Ddamo-manager.enabled=true) ----"
          java -Ddamo-manager.enabled=true -cp build/libs/damo-manager.jar com.eactive.ext.djb.DamoManager
          echo "---- require-real must fail without scpdb ----"
          if java -Ddamo-manager.require-real=true -cp build/libs/damo-manager.jar com.eactive.ext.djb.DamoManager 2>/dev/null; then
            echo "ERROR: require-real should have failed without scpdb"; exit 1
          else
            echo "OK: require-real failed fast as expected"
          fi
          echo "---- CLI param mode ----"
          java -jar build/libs/damo-manager.jar info
        '''
      }
    }

    stage('Package & checksum') {
      steps {
        sh '''
          set -eu
          rm -rf build/dist
          mkdir -p build/dist
          cp build/libs/damo-manager.jar build/dist/
          cp README.md build/dist/
          cd build/dist
          sha1sum   damo-manager.jar README.md > SHA1SUMS
          sha256sum damo-manager.jar README.md > SHA256SUMS
          ls -la
          echo "---- SHA256SUMS ----"
          cat SHA256SUMS
        '''
      }
      post {
        success {
          archiveArtifacts artifacts: 'build/dist/damo-manager.jar,build/dist/README.md,build/dist/SHA1SUMS,build/dist/SHA256SUMS', fingerprint: true
        }
      }
    }
  }
}
