# Copyright (c) 2024 Tenstorrent AI ULC
#
# SPDX-License-Identifier: Apache-2.0

# A pykwalify schema for basic validation of the patches.yml format.

# The schema for individual patch objects
schema;patch-schema:
  type: seq
  sequence:
    - type: map
      mapping:

        # The path to the patch file, relative to patch-base
        # E.g. zephyr/kernel-pipe-fix-not-k-no-wait-and-ge-min-xfer-bytes.patch
        path:
          required: true
          type: str

        # The SHA-256 checksum of the patch file
        # e.g. e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
        sha256sum:
          required: true
          type: str
          pattern: "^[0-9a-f]{64}$"

        # The path of the module the patch is for, relative to the west workspace
        # e.g. zephyr, or bootloader/mcuboot
        module:
          required: true
          type: str

        # The name of the primary author of the patch, e.g. Kermit D. Frog
        author:
          required: true
          type: str

        # The email address of the primary author of the patch, e.g. itsnoteasy@being.gr
        email:
          required: true
          type: str
          pattern: ".+@.+"

        # The date the patch was created, in ISO 8601 date format YYYY-MM-DD
        date:
          required: true
          type: date
          format: "%Y-%m-%d"

        # Whether the patch should be submitted upstream
        upstreamable:
          type: bool
          default: true

        # The URL of the upstream pull request to merge the patch
        # e.g. https://github.com/zephyrproject-rtos/zephyr/pull/24486
        merge-pr:
          type: str
          pattern: "^https?://"

        # The URL of the upstream issue associated with the patch, such as an enhancement issue
        # or bug report, e.g. https://github.com/zephyrproject-rtos/zephyr/issues/24485
        issue:
          type: str
          pattern: "^https?://"

        # Whether the associated merge-pr has been merged
        merge-status:
          type: bool

        # The SHA-1 hash of the upstream git commit incorporating the associated merge-pr
        # e.g. af926ae728c78affa89cbc1de811ab4211ed0f69
        merge-commit:
          type: str
          pattern: "^[0-9a-f]{40}"

        # The date the associated merge-pr was merged, in ISO 8601 date format YYYY-MM-DD
        merge-date:
          type: date
          format: "%Y-%m-%d"

        # The command used to apply the change represented by the patch
        apply-command:
          type: str
          default: "git apply"

        # Comments useful to other developers about the patch,
        # e.g. "This is a workaround for xyz and probably should not go upstream"
        comments:
          type: str

        # Custom field that may be used for any purpose. For example, if the chosen apply-patch
        # command is able to filter based on semantic versioning and a particular patch file
        # only applies to version 1.2.3, one could specify e.g. custom: [1, 2, 3].
        # This field may be of any type and is not validated.
        custom:
          type: any

# The top-level schema for patches.yml files
type: map
mapping:

  # The list of patch objects
  patches:
    include: patch-schema

  # The command used to undo local changes to each module when "west patch clean" is run
  checkout-command:
    type: str
    default: "git checkout ."

  # The command used to clean each module when "west patch clean" is run
  clean-command:
    type: str
    default: "git clean -d -f -x"
