pipeline {
    agent any

    stages {
        stage('Get Last Commit Details') {
            steps {
                script{
                    println ("ChangeSet: " + currentBuild.changeSets)
                    
                    List<String> changes = getChangedFilesList()
                    println ("Changed file list: " + changes)

                    String gitCommitId = getGitcommitID()
                    println("GIT CommitID: " + gitCommitID)

                    String gitCommitMessage = getCommitMessage()
                    println("GIT CommitMessage: " + gitCommitMessage)

                    for(file in changes){
                        String str1 = file;
                        String[] str = str1.split("/");
                        String strFinal = "";
                        String strFinal1 = "";
                        
                        if(str.length > 0){
                            for(int i = 0; i < (str.length - 1); i++){
                                strFinal += str[i] + "/";
                            }
                        }
                        
                        strFinal1 = (strFinal == "") ? "" : strFinal.substring(0, strFinal.length() - 1);

                        /*try{
                            sh "ssh jenkins@${IP_SERVIDOR} mkdir /var/www/html/tracken/${strFinal1}"
                        }catch(Exception e){
                            println("Erro ao criar pasta ${strFinal1}");
                        }*/

                        try{
                            //sh "scp -r -o StrictHostKeyChecking=no ${file} jenkins@66.94.103.132:/var/www/html/tracken/${strFinal1}"
                            //sh "rsync -av ${PROGRESS} ${strFinal1} jenkins@${IP_SERVIDOR}:/var/www/html/tracken/"
                            sh "rsync -av ${PROGRESS} ${file} jenkins@${IP_SERVIDOR}:/var/www/html/tracken/${strFinal1}"
                            sh "ssh ${PORTA} jenkins@${IP_SERVIDOR} chmod -R 775 /var/www/html/tracken/"
                        }catch(Exception e){
                            println("Erro enviar arquivo ${file}");
                        }
                    }
                    
                    
                    
                    println("FIM scp!")

                }
            }
        }
    }
}

@NonCPS
List<String> getChangedFilesList(){
    def changedFiles = []
    for ( changeLogSet in currentBuild.changeSets){
        for (entry in changeLogSet.getItems()){
            changedFiles.addAll(entry.affectedPaths)
        }
    }
    return changedFiles
}

@NonCPS
String getGitcommitID(){
    gitCommitID = " "
    for ( changeLogSet in currentBuild.changeSets){
        for (entry in changeLogSet.getItems()){
            gitCommitID = entry.commitId
        }
    }
    return gitCommitID
}

@NonCPS
String getAuthorName(){
    gitAuthorName = " "
    for ( changeLogSet in currentBuild.changeSets){
        for (entry in changeLogSet.getItems()){
            gitAuthorName = entry.authorName
        }
    }
    return gitAuthorName
}

@NonCPS
String getCommitMessage(){
    commitMessage = " "
    for ( changeLogSet in currentBuild.changeSets){
        for (entry in changeLogSet.getItems()){
            commitMessage = entry.msg
        }
    }
    return commitMessage
}

