resources:
- repo: self
steps:
- bash: |
    if [ "$ELECTRON_RELEASE" == "1" ]; then
      echo 'Bootstrapping Electron for release build'
      script/bootstrap.py --target_arch=$TARGET_ARCH
    else
      echo 'Bootstrapping Electron for debug build'
      script/bootstrap.py --target_arch=$TARGET_ARCH --dev
    fi
  name: Bootstrap

- bash: |
    npm run lint
  name: Lint
  condition: and(succeeded(), ne(variables['ELECTRON_RELEASE'], '1'))

- bash: |
    if [ "$ELECTRON_RELEASE" == "1" ]; then
      echo 'Building Electron for release'
      script/build.py -c R
    else
      echo 'Building Electron for debug'
      script/build.py -c D
    fi
  name: Build

- bash: |
    echo 'Creating Electron release distribution'
    script/create-dist.py
  name: Create_distribution
  condition: and(succeeded(), eq(variables['ELECTRON_RELEASE'], '1'))

- bash: |
    if [ "$UPLOAD_TO_S3" != "1" ]; then
      echo 'Uploading Electron release distribution to github releases'
      ELECTRON_S3_BUCKET="$(s3_bucket)" ELECTRON_S3_ACCESS_KEY="$(s3_access_key)" ELECTRON_S3_SECRET_KEY="$(s3_secret_key)" ELECTRON_GITHUB_TOKEN="$(github_token)" script/upload.py
    else
      echo 'Uploading Electron release distribution to s3'
      ELECTRON_S3_BUCKET="$(s3_bucket)" ELECTRON_S3_ACCESS_KEY="$(s3_access_key)" ELECTRON_S3_SECRET_KEY="$(s3_secret_key)" ELECTRON_GITHUB_TOKEN="$(github_token)" script/upload.py --upload_to_s3
    fi
  name: Upload_distribution
  condition: and(succeeded(), eq(variables['ELECTRON_RELEASE'], '1'))

- bash: |
    echo 'Testing Electron build'
    mkdir junit
    export MOCHA_FILE="junit/test-results.xml"
    export MOCHA_REPORTER="mocha-junit-reporter"
    if [ "$ELECTRON_RELEASE" == "1" ]; then
      script/test.py --ci --rebuild_native_modules -c R
    else
      script/test.py --ci --rebuild_native_modules
    fi
  name: Test
  condition: or(ne(variables['ELECTRON_RELEASE'], '1'), eq(variables['UPLOAD_TO_S3'], '1'))

- bash: |
    echo 'Verifying ffmpeg on build'
    if [ "$ELECTRON_RELEASE" == "1" ]; then
      script/verify-ffmpeg.py -R
    else
      script/verify-ffmpeg.py
    fi
  name: Verify_FFmpeg
  condition: or(ne(variables['ELECTRON_RELEASE'], '1'), eq(variables['UPLOAD_TO_S3'], '1'))

- task: PublishTestResults@2
  displayName: Publish Test Results
  inputs:
    testResultsFiles: 'test-results.xml'
    searchFolder: junit
  condition: and(always(), ne(variables['ELECTRON_RELEASE'], '1'))

- bash: |
    export BUILD_URL="${SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}${SYSTEM_TEAMPROJECT}/_build/results?buildId=${BUILD_BUILDID}"
    export MESSAGE="Build failed for *<$BUILD_URL|$BUILD_DEFINITIONNAME>* nightly build."
    curl -g -H "Content-Type: application/json" -X POST \
    -d "{\"text\": \"$MESSAGE\", \"attachments\": [{\"color\": \"#FC5C3C\",\"title\": \"$BUILD_DEFINITIONNAME nightly build results\",\"title_link\": \"$BUILD_URL\"}]}" $(slack_webhook)
  name: Post_Slack_Notification_on_Failure
  condition: failed()

- bash: |
    export BUILD_URL="${SYSTEM_TEAMFOUNDATIONCOLLECTIONURI}${SYSTEM_TEAMPROJECT}/_build/results?buildId=${BUILD_BUILDID}"
    export MESSAGE="Build succeeded for *<$BUILD_URL|$BUILD_DEFINITIONNAME>* nightly build."
    curl -g -H "Content-Type: application/json" -X POST \
    -d "{\"text\": \"$MESSAGE\", \"attachments\": [{\"color\": \"#FC5C3C\",\"title\": \"$BUILD_DEFINITIONNAME nightly build results\",\"title_link\": \"$BUILD_URL\"}]}" $(slack_webhook)
  name: Post_Slack_Notification_on_Success
  condition: succeeded()

- task: PublishBuildArtifacts@1
  displayName: Publish Build Artifacts
  inputs:
    PathtoPublish: '$(Build.SourcesDirectory)/out'
    ArtifactName: out

- task: mspremier.PostBuildCleanup.PostBuildCleanup-task.PostBuildCleanup@3