---
kind: pipeline
type: docker
name: default

trigger:
  branch:
    - master
  event:
    include:
      - push
      - cron
      - custom

steps:
  - name: submodules
    image: alpine/git
    commands:
      - git submodule update --init --recursive

  - name: Compress Images
    image: registry.tobiasmanske.de/docker-avif-webp:latest
    secrets: [registry]
    depends_on:
      - submodules

  - name: Check for new posts
    image: klakegg/hugo:alpine
    pull: always
    commands:
      # If this is a cronjob and there are no new pages to publish fail successfully (exit status 78)
      - export TIMESTAMP_YESTERDAY=$(date -d @$(($(date +%s) - 86400)) -u +"%Y-%m-%dT%H:%M:%SZ")
      - export POST_YESTERDAY=$(hugo list future --clock $TIMESTAMP_YESTERDAY | md5sum)
      - export POST_TODAY=$(hugo list future | md5sum)
      - if [ "$POST_YESTERDAY" = "$POST_TODAY" ]; then exit 78; fi
      - exit 0
    depends_on:
      - Compress Images
      - submodules
    when:
      event:
        - cron

  - name: Build HTML
    image: klakegg/hugo:alpine
    commands:
      - hugo --minify
    depends_on:
      - Compress Images
      - submodules
      - Check for new posts

  - name: Build Image
    image: plugins/docker
    settings:
      repo: registry.tobiasmanske.de/tobiasmanske.de
      force_tag: true
      registry: registry.tobiasmanske.de
      username:
        from_secret: docker_username
      password:
        from_secret: docker_password
      tags:
        - latest
        - ${DRONE_BRANCH}
      cache_from:
        - "registry.tobiasmanske.de/tobiasmanske.de:master"
        - "registry.tobiasmanske.de/tobiasmanske.de:${DRONE_BRANCH}"
    depends_on:
      - Build HTML

image_pull_secrets:
  - registry
