---
kind: pipeline
name: test

platform:
  os: linux
  arch: amd64

steps:
- name: assets
  image: node:lts
  commands:
  - npm install -g gulp
  - npm install
  - gulp default
  environment:
    FORCE_COLOR: true
    NPM_CONFIG_LOGLEVEL: error

- name: testbuild
  image: klakegg/hugo:0.72.0-ext-alpine
  commands:
  - mkdir exampleSite/themes/ && ln -s $(pwd)/ exampleSite/themes/hugo-geekdoc
  - hugo-official -s exampleSite/ -b http://localhost/

- name: html-validation
  image: validator/validator
  commands:
  - vnu --skip-non-html --also-check-css --errors-only exampleSite/public

- name: link-validation
  image: xoxys/link-validator
  commands:
  - link-validator -ro
  environment:
    LINK_VALIDATOR_BASE_DIR: exampleSite/public

- name: page-validation
  image: patrickhulce/lhci-client
  user: root
  commands:
  - lhci autorun

trigger:
  ref:
  - refs/heads/master
  - refs/tags/**
  - refs/pull/**

---
kind: pipeline
name: build

platform:
  os: linux
  arch: amd64

steps:
- name: assets
  image: node:lts
  commands:
  - npm install -g gulp
  - npm install
  - gulp default
  environment:
    FORCE_COLOR: true
    NPM_CONFIG_LOGLEVEL: error

- name: package
  image: alpine
  commands:
  - mkdir dist/
  - echo "${DRONE_TAG:-latest}" > VERSION
  - tar -zcvf dist/hugo-geekdoc.tar.gz -X .tarignore .

- name: checksum
  image: alpine
  commands:
  - cd dist/ && sha256sum * > ../sha256sum.txt

- name: release
  image: plugins/github-release
  settings:
    api_key:
      from_secret: github_token
    files:
    - dist/*
    - sha256sum.txt
    note: CHANGELOG.md
    overwrite: true
    title: ${DRONE_TAG}

trigger:
  ref:
  - refs/tags/**

depends_on:
- test

---
kind: pipeline
name: docs

platform:
  os: linux
  arch: amd64

concurrency:
  limit: 1

steps:
- name: markdownlint
  image: node:lts-alpine
  commands:
  - npm install -g markdownlint-cli
  - markdownlint 'exampleSite/content/**/*.md' 'README.md'
  environment:
    FORCE_COLOR: true
    NPM_CONFIG_LOGLEVEL: error

- name: spellcheck
  image: node:lts-alpine
  commands:
  - npm install -g spellchecker-cli
  - spellchecker --files 'exampleSite/content/**/*.md' 'README.md' -d .dictionary -p spell indefinite-article syntax-urls --no-suggestions
  environment:
    FORCE_COLOR: true
    NPM_CONFIG_LOGLEVEL: error

- name: assets
  image: byrnedo/alpine-curl
  commands:
  - mkdir -p exampleSite/themes/hugo-geekdoc/
  - curl -sSL https://github.com/xoxys/hugo-geekdoc/releases/latest/download/hugo-geekdoc.tar.gz | tar -xz -C exampleSite/themes/hugo-geekdoc/ --strip-components=1

- name: build
  image: klakegg/hugo:0.72.0-ext-alpine
  commands:
  - hugo-official -s exampleSite/

- name: publish
  image: plugins/s3-sync
  settings:
    access_key:
      from_secret: s3_access_key
    bucket: geekdocs-root
    delete: true
    endpoint: https://sp.rknet.org
    path_style: true
    secret_key:
      from_secret: s3_secret_access_key
    source: exampleSite/public/
    strip_prefix: exampleSite/public/
  when:
    ref:
    - refs/heads/master
    - refs/tags/**

trigger:
  ref:
  - refs/heads/master
  - refs/tags/**
  - refs/pull/**

depends_on:
- build

---
kind: pipeline
name: notifications

platform:
  os: linux
  arch: amd64

steps:
- name: matrix
  image: plugins/matrix
  settings:
    homeserver:
      from_secret: matrix_homeserver
    password:
      from_secret: matrix_password
    roomid:
      from_secret: matrix_roomid
    template: "Status: **{{ build.status }}**<br/> Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.link }}) ({{ build.branch }}) by {{ build.author }}<br/> Message: {{ build.message }}"
    username:
      from_secret: matrix_username
  when:
    status:
    - success
    - failure

trigger:
  ref:
  - refs/heads/master
  - refs/tags/**
  status:
  - success
  - failure

depends_on:
- test
- build
- docs

---
kind: signature
hmac: c9158b4a7c4fb787644c711560925ffae038a982953f958d5f535158f640032f

...
