kind: pipeline
type: docker
name: default

node:
    lan: internal

steps:
    - name: build
      image: node
      commands:
          - npm install
          - npm run build

    - name: version
      image: node
      commands:
          - export version=`node -p "require('./package.json').version"`
          - export commit=`echo $DRONE_COMMIT | cut -c1-5`
          - npm version prerelease --preid=$commit --git-tag-version=false --allow-same-version=true
      when:
          event:
              exclude:
                  - tag
                  - pull_request
          branch:
              include:
                  - master

    - name: publish pre
      image: node
      environment:
          token:
              from_secret: npm_token
      commands:
          - npm config set @watsonb8:registry https://gitea.watsonlabs.net/api/packages/watsonb8/npm/
          - npm config set -- '//gitea.watsonlabs.net/api/packages/watsonb8/npm/:_authToken' "$token"
          - npm publish
      when:
          event:
              exclude:
                  - tag
                  - pull_request
          branch:
              include:
                  - master

    - name: publish tagged version
      image: node
      environment:
          token:
              from_secret: npm_token
      commands:
          - npm config set @watsonb8:registry https://gitea.watsonlabs.net/api/packages/watsonb8/npm/
          - npm config set -- '//gitea.watsonlabs.net/api/packages/watsonb8/npm/:_authToken' "$token"
          - npm publish
      when:
          event:
              - tag
          exclude:
              - pull_request

    - name: remove old package
      image: appleboy/drone-ssh
      environment:
          SSH_USER:
              from_secret: ssh_user
      settings:
          host: homebridge.me
          envs:
              - SSH_USER
          username:
              from_secret: ssh_user
          key:
              from_secret: ssh_key
          port: 22
          script:
              - rm -r /home/$SSH_USER/.npm-global/lib/node_modules/@watsonb8/homebridge-flux || true
      when:
          event:
              - tag
          exclude:
              - pull_request

    - name: deploy
      image: appleboy/drone-ssh
      settings:
          host: homebridge.me
          username:
              from_secret: ssh_user
          key:
              from_secret: ssh_key
          port: 22
          script:
              - npm install -g @watsonb8/homebridge-flux
      when:
          event:
              - tag
          exclude:
              - pull_request

    - name: restart homebridge
      image: appleboy/drone-ssh
      settings:
          host: homebridge.me
          username:
              from_secret: elevated_ssh_user
          key:
              from_secret: ssh_key
          port: 22
          script:
              - systemctl restart homebridge
      when:
          event:
              - tag
          exclude:
              - pull_request

    - name: Notify
      image: drillster/drone-email
      settings:
          host: 10.44.1.13
          username: srvGitea
          password:
              from_secret: smtp_password
          from: drone@watsonlabs.net
          skip_verify: true
      when:
          status:
              - failure