pipeline {
	agent {
		docker {
			image 'hub.davinti.com.br:443/infra/node:latest'
				args '-u root'
		}
	}

	environment {
		S3_BUCKET = "s3://app-dono-manifests"
	}

	stages {
		stage('Install') {
			steps {
				sh 'npm install'
			}
		}

		stage('Vet') {
			steps {
				echo 'Validating modules (Standard for all branches)...'
					sh 'npx jeff vet -i "src/**/*.module.ts" --strict'
			}
		}

		stage('Generate & Upload') {
			when {
				branch 'main'
			}
			steps {
				echo 'Generating manifest and deploying to S3...'
					sh 'npm run generate:output'

					withAWS(credentials: 'aws-jeff-credentials-id', region: 'sa-east-1') {
						script {
							echo "Uploading to S3..."
							sh "aws s3 cp dist/manifest.json ${S3_BUCKET}/manifest.json"
						}
					}
			}
		}
	}

	post {
        always {
            script {
                sh 'rm -f ~/.netrc'
                deleteDir()
            }
        }
        success {
            echo "✨ Manifest successfully uploaded to S3!"
        }
        failure {
            echo "❌ Build failed. Check the logs for Jeff's validation errors."
        }
    }
}
