pipeline {
  agent {
    node {
      label 'raspberrypi'
    }
  }

  stages {

    stage("Setup Version") {
      steps {
        script {
          switch(BRANCH_NAME) {
            case "master":
                VERSION_NUMBER = VersionNumber([
                  versionNumberString :'${BUILD_DATE_FORMATTED, "yyyyMMdd"}',
                  versionPrefix : ''
                ])
                UPLOAD_BRANCH="release"
                MASTER_BRANCH=true
                break
            default:
                VERSION_NUMBER = VersionNumber([
                  versionNumberString :'${BUILD_DATE_FORMATTED, "yyyyMMdd"}${BUILDS_TODAY}',
                  versionPrefix : ''
                ])
                UPLOAD_BRANCH="feature"
                MASTER_BRANCH=false
          }
          echo "branch: $BRANCH_NAME"
          echo "VERSION: $VERSION_NUMBER"
          echo "Upload directory name: $UPLOAD_BRANCH"
        }
      }
    }

    stage("Setup Environment") {

      steps {
        checkout scm
        sh '''#!/bin/bash
          set -x; set -u -o pipefail
          source /home/pi/nfbuildp3/bin/activate
          pyinstaller -F router-registration.py 
          pyinstaller -F router-reg.py
          pyinstaller -F tunnel-registration.py
          pyinstaller -F tunnel-reg.py
          pyinstaller -F zt-upg.py
          pyinstaller -F zt-upgrade.py
       '''
      }
    }

    stage('Upload reg code'){
      environment {
        VERSION_NUMBER = "$VERSION_NUMBER"
        UPLOAD_BRANCH = "$UPLOAD_BRANCH"
  
  
        def uploadSpec = """{
          "files": [{
            "pattern": "./dist/(*)",
            "target": "router-registration/{1}/${env.UPLOAD_BRANCH}/linux_arm32/${env.VERSION_NUMBER}/",
            "recursive": "false",
            "flat": "true",
            "props": "version=${env.VERSION_NUMNBER}"
          }]
        }"""
      }

      steps {
        script {
          //def buildInfo = Artifactory.newBuildInfo()
          //buildInfo.env.capture = true
          def server = Artifactory.server 'mop-user'
          //buildInfo = server.upload(uploadSpec)
          server.upload(uploadSpec)
          echo 'Uploaded compiled reg code to Artifactory'
        }
      }
    }

    stage('Upload Images to jfrog latest folder') {
      when { expression { MASTER_BRANCH }}

      environment {
        VERSION_NUMBER = "$VERSION_NUMBER"
        UPLOAD_BRANCH = "$UPLOAD_BRANCH"
 
        def uploadSpecLatest = """{
          "files": [{
            "pattern": "./dist/(*)",
            "target": "router-registration/{1}/${env.UPLOAD_BRANCH}/linux_arm32/latest/",
            "recursive": "false",
            "flat": "true",
            "props": "version=${env.VERSION_NUMNBER}"
          }]
        }"""
      }

      steps {
        script {
          //def buildInfo = Artifactory.newBuildInfo()
          //buildInfo.env.capture = true
          def server = Artifactory.server 'mop-user'
          //#buildInfo = server.upload(uploadSpecLatest)
          server.upload(uploadSpecLatest)
          echo 'Uploaded compiled reg code to Artifactory Latest directory'
        }
      }
    }
  }

  post {
    always {
      echo 'One way or another, I have finished'
      cleanWs() /* clean up our workspace */
    }
  }


}
