pipeline {
  agent {
      label 'python311 && amd64'
  }
  options {
    disableConcurrentBuilds()
  }

  tools {nodejs "Node 20"}

  stages {
    stage('Install Python Virtual Enviroment') {
      steps {
        sh 'python3.11 -m venv env'
      }
    }

    stage('Install Application Dependencies') {
      steps {
        sh '''
          . env/bin/activate
          pip3.11 install --upgrade pip
          pip3.11 install -r requirements.txt
          corepack enable
          npm install
          deactivate
          '''
      }
    }

    stage('Build') {
      steps {
        sh 'npm run build'
      }
    }

    stage('Deploy if tagged') {
      when {
        tag pattern: '\\d+\\.\\d+\\.\\d+', comparator: "REGEXP"
      }
      steps {
        s3Upload profileName: 'Irrsinn.net Buckets',
          userMetadata: [],
          dontWaitForConcurrentBuildCompletion: false,
          dontSetBuildResultOnFailure: false,
          pluginFailureResultConstraint: 'FAILURE',
          consoleLogLevel: 'INFO',
          entries: [[
            bucket: 'plex-watchlist',
            sourceFile:'dist/**',
            managedArtifacts: false,
            keepForever: true,
            noUploadOnFailure: true,
            selectedRegion: 'us-east-1'
          ]]
      }
    }

  }
  post {
    cleanup {
      cleanWs()
      dir("${env.WORKSPACE}@tmp") {
        deleteDir()
      }
      dir("${env.WORKSPACE}@2") {
        deleteDir()
      }
      dir("${env.WORKSPACE}@2@tmp") {
        deleteDir()
      }
    }
  }
}
