pipeline {
    agent {
        dockerfile {
            filename 'Dockerfile'
            args '-u root:root'
            registryUrl 'https://hub.docker.com/repository/docker/s487187/ium'
        }
    }

    stages {
        stage('Preparation') {
            when { expression { true } }
            steps {
                script {
                    try {
                        properties([
                            parameters([
                                string(
                                    defaultValue: '',
                                    description: 'Kaggle username',
                                    name: 'KAGGLE_USERNAME',
                                    trim: false
                                ),
                                password(
                                    defaultValue: '',
                                    description: 'Kaggle token taken from kaggle.json file',
                                    name: 'KAGGLE_KEY'
                                ),
                                string(
                                    defaultValue: '50',
                                    description: 'number of examples in dataset',
                                    name: 'CUTOFF'
                                )
                            ])
                        ])
                    } catch (err) {
                        error "Failed to set up parameters: ${err.message}"
                    }
                }
            }
        }
        stage('Build') {
            when { expression { params.KAGGLE_USERNAME && params.KAGGLE_KEY } }
            steps {
                script {
                    try {
                        withEnv(["KAGGLE_USERNAME=${params.KAGGLE_USERNAME}",
                                "KAGGLE_KEY=${params.KAGGLE_KEY}" ]) {
                            sh 'echo KAGGLE_USERNAME: $KAGGLE_USERNAME'
                            sh '''
                                #!/bin/bash
                                pip install kaggle

                                kaggle datasets download -d nitishsharma01/olympics-124-years-datasettill-2020

                                unzip -o olympics-124-years-datasettill-2020.zip

                                echo "Processed Data" > output.txt

                                python3 /app/scripts/stats.py -i olympics-124-years-datasettill-2020/Athletes_summer_games.csv -o output.txt
                            '''
                            sh "head -n ${params.CUTOFF} olympics-124-years-datasettill-2020/Athletes_summer_games.csv"
                        }
                    } catch (err) {
                        error "Failed to build: ${err.message}"
                    }
                }
            }
        }

        stage('Clone Git Repository') {
            when { expression { params.KAGGLE_USERNAME && params.KAGGLE_KEY } }
            steps {
                script {
                    try {
                        git 'https://git.wmi.amu.edu.pl/s487187/ium_487187.git'
                    } catch (err) {
                        error "Failed to clone repository: ${err.message}"
                    }
                }
            }
        }

        stage('End') {
            when { expression { params.KAGGLE_USERNAME && params.KAGGLE_KEY } }
            steps {
                echo 'Program ended!'
            }
        }
    }
    
    post {
        always {
            node('output-archive') {
                archiveArtifacts 'output.txt'
            }
        }
    }
}