kind: pipeline
name: default

steps:
- name: restore cache
  image: drillster/drone-volume-cache
  settings:
    restore: true
    mount:
      - ./node_modules
  volumes:
  - name: cache
    path: /cache

- name: npm install
  image: node:12
  commands:
  - npm install

- name: npm run build
  image: node:12
  commands:
  - npm run build

- name: rebuild cache
  image: drillster/drone-volume-cache
  settings:
    rebuild: true
    mount:
      - ./node_modules
  volumes:
  - name: cache
    path: /cache

- name: show tag
  image: alpine
  commands:
    - echo ${DRONE_BUILD_CREATED}

- name: npm run test
  image: node:12
  commands:
  - npm run test

- name: rebuild documentation
  image: node:12
  commands:
  - rm -rf docs
  - npm run docs
  trigger:
    event:
      - tag

- name: npm publish
  image: plugins/npm
  settings:
    username: frontwork
    password:
      from_secret: npm_password
    email: frontwork.me@gmail.com
  trigger:
    event:
      - tag

- name: versioning
  image: node:12
  commands:
  - git config --global user.email "frontwork.me@gmail.com"
  - git config --global user.name "drone"

  - PACKAGE_VERSION=$(cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[\",]//g' | tr -d '[[:space:]]')
  - LATEST_VERSION=$(npm view rpclibrary | grep latest | head -1 | awk -F: '{ print $2 }' | sed 's/[\",]//g' | tr -d '[[:space:]]')
    - if [ "${PACKAGE_VERSION}" != "${LATEST_VERSION}" ]; 
      then 
        git tag $PACKAGE_VERSION
        git status
        git push https://$GIT_USER:$GIT_PASSWORD@gitea.frontblock.me/fw-vendor/${DRONE_REPO_NAME}.git $PACKAGE_VERSION; 
      else 
        echo 'Version: '
        echo $LATEST_VERSION 
        echo 'did not change. Don`t push tag to master'; 
    fi
  - echo 'Package Version: '; echo ${PACKAGE_VERSION}
  - echo 'Latest Version: '; echo ${LATEST_VERSION}


  environment:
    GIT_USER:
      from_secret: git_user
    GIT_PASSWORD:
      from_secret: git_password
  trigger:
  event:
    exclude:
    - tag

- name: commit documentation
  image: node:12
  commands:
  - git config --global user.email "frontwork.me@gmail.com"
  - git config --global user.name "drone"
  - git add -f docs
  - git commit --allow-empty -m "documented version at ${DRONE_BUILD_CREATED}"
  - git tag ${DRONE_BUILD_CREATED}
  - git status
  - git push https://$GIT_USER:$GIT_PASSWORD@gitea.frontblock.me/fw-vendor/${DRONE_REPO_NAME}.git master ${DRONE_BUILD_CREATED}
  environment:
    GIT_USER:
      from_secret: git_user
    GIT_PASSWORD:
      from_secret: git_password
  trigger:
  event:
  - tag
  
volumes:
- name: cache 
  host:
    path: /tmp