image:
- Visual Studio 2017
- Ubuntu1804

branches:
  except:
    - l10n_master

stack: node 10

init:
- ps: |
    if($isWindows -and $env:DEBUG_RDP -eq "true") {
      iex ((new-object net.webclient).DownloadString(`
        'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
    }
- sh: sudo apt-get update
- sh: sudo apt-get -y install pkg-config libxss-dev libsecret-1-dev rpm
- ps: |
    if($isWindows) {
      Install-Product node 10
    }
    if($env:APPVEYOR_REPO_TAG -eq "true") {
      $env:RELEASE_NAME = $env:APPVEYOR_REPO_TAG_NAME.TrimStart("v")
    }

install:
- ps: |
    $env:PACKAGE_VERSION = (Get-Content -Raw -Path .\src\package.json | ConvertFrom-Json).version
    $env:PROD_DEPLOY = "false"
    if($env:APPVEYOR_REPO_TAG -eq "true" -and $env:APPVEYOR_RE_BUILD -eq "True") {
      $env:PROD_DEPLOY = "true"
      echo "This is a production deployment."
    }
    if($isWindows) {
      choco install cloc --no-progress
      cloc --include-lang TypeScript,JavaScript,HTML,Sass,CSS --vcs git
    }

before_build:
- node --version
- npm --version
# Get new $SNAP_TOKEN with:
# $ snapcraft export-login --snaps bitwarden --acls package_push,package_release -
- sh: |
    if [ "${SNAP_TOKEN}" != "" -a "${PROD_DEPLOY}" == "true" ]
    then
      sudo apt-get update
      sudo apt-get -y install snapd
      sudo snap install snapcraft --classic
      export PATH="$PATH:/snap/bin"
      echo "$SNAP_TOKEN" | snapcraft login --with -
    fi
- ps: |
    if($isWindows -and $env:CHOCO_API_KEY -ne $null -and $env:PROD_DEPLOY -eq "true") {
      choco install checksum --no-progress
      choco apikey --key $env:CHOCO_API_KEY --source https://push.chocolatey.org/
    }

build_script:
- npm install
- npm run lint
- ps: |
    if($isLinux) {
      npm run dist:lin
      Push-AppveyorArtifact ./dist/Bitwarden-${env:PACKAGE_VERSION}-x86_64.AppImage
      Push-AppveyorArtifact ./dist/bitwarden_${env:PACKAGE_VERSION}_amd64.snap
      Push-AppveyorArtifact ./dist/Bitwarden-${env:PACKAGE_VERSION}-amd64.deb
      Push-AppveyorArtifact ./dist/Bitwarden-${env:PACKAGE_VERSION}-x64.freebsd
      Push-AppveyorArtifact ./dist/Bitwarden-${env:PACKAGE_VERSION}-x86_64.rpm
    }
    else {
      npm run dist:win:ci
      Rename-Item -Path .\dist\Bitwarden-${env:PACKAGE_VERSION}-x64.appx `
        -NewName Bitwarden-${env:PACKAGE_VERSION}-x64-store.appx
      Rename-Item -Path .\dist\Bitwarden-${env:PACKAGE_VERSION}-ia32.appx `
        -NewName Bitwarden-${env:PACKAGE_VERSION}-ia32-store.appx
      Push-AppveyorArtifact .\dist\Bitwarden-Portable-${env:PACKAGE_VERSION}.exe
      Push-AppveyorArtifact .\dist\nsis-web\Bitwarden-Installer-${env:PACKAGE_VERSION}.exe
      Push-AppveyorArtifact .\dist\Bitwarden-${env:PACKAGE_VERSION}-x64-store.appx
      Push-AppveyorArtifact .\dist\Bitwarden-${env:PACKAGE_VERSION}-ia32-store.appx
    }

after_build:
- ps: |
    if($env:PROD_DEPLOY -eq "true") {
      if($isLinux) {
        echo "Deploy Linux..."
        ./scripts/snap-update.ps1 -version $env:PACKAGE_VERSION
      }
      else {
        echo "Deploy Windows..."
        .\scripts\choco-update.ps1 -version $env:PACKAGE_VERSION
        Push-AppveyorArtifact .\dist\chocolatey\bitwarden.${env:PACKAGE_VERSION}.nupkg
      }
    }
- sh: |
    if [ "${SNAP_TOKEN}" != "" -a "${PROD_DEPLOY}" == "true" ]
    then
      snapcraft logout
    fi

on_finish:
  - ps: |
      if($isWindows -and $env:DEBUG_RDP -eq "true") {
        $blockRdp = $true
        iex ((new-object net.webclient).DownloadString(`
          'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
      }

for:
- 
  matrix:
    only:
      - image: Visual Studio 2017
  cache:
  - '%LOCALAPPDATA%\electron'
  - '%LOCALAPPDATA%\electron-builder'

-
  matrix:
    only:
      - image: Ubuntu1804
  cache:
  - '/home/appveyor/.cache/electron'
  - '/home/appveyor/.cache/electron-builder'

deploy:
  tag: $(APPVEYOR_REPO_TAG_NAME)
  release: $(RELEASE_NAME)
  provider: GitHub
  auth_token: $(GH_TOKEN)
  artifact: .*(\.nupkg|_store\.appx)$
  force_update: true
  on:
    branch: master
    APPVEYOR_REPO_TAG: true
    PROD_DEPLOY: true