# SPDX-FileCopyrightText: 2023 Johannes Loher
#
# SPDX-License-Identifier: MIT

$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json

variables:
  - &node_image node:lts
  - &enable_pnpm
    - corepack enable
    - corepack prepare pnpm@latest --activate

when:
  - event: push
  - event: pull_request
  - event: tag
  - event: manual

steps:
  install:
    image: *node_image
    commands:
      - <<: *enable_pnpm
      - pnpm install --frozen-lockfile
  lint:
    group: check
    image: *node_image
    commands:
      - <<: *enable_pnpm
      - pnpm lint
  formatcheck:
    group: check
    image: *node_image
    commands:
      - <<: *enable_pnpm
      - pnpm format:check
  typecheck:
    group: check
    image: *node_image
    commands:
      - <<: *enable_pnpm
      - pnpm typecheck
  test:
    group: check
    image: *node_image
    commands:
      - <<: *enable_pnpm
      - pnpm test
  reuse:
    group: check
    image: fsfe/reuse:latest
    commands:
      - reuse lint
  commitlint:
    group: check
    image: *node_image
    commands:
      - <<: *enable_pnpm
      - git fetch origin ${CI_COMMIT_TARGET_BRANCH}
      - pnpm exec commitlint --from origin/${CI_COMMIT_TARGET_BRANCH}
    when:
      event: pull_request
  build:
    group: build
    image: *node_image
    commands:
      - export APPDATA=$(pwd)
      - <<: *enable_pnpm
      - pnpm build