# Copyright (c) 2020 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

############################################################
#  Top Level Labels
############################################################
repo:
  - changed-files:
    - any-glob-to-any-file:
      - './*'

############################################################
#  Examples
############################################################
examples:
  - changed-files:
    - any-glob-to-any-file:
      - examples/*
      - examples/**/*

############################################################
#  Documentation
############################################################
documentation:
  - changed-files:
    - any-glob-to-any-file:
      - docs/*
      - docs/**/*
      - "*.md"

############################################################
#  Tools + Development Items
############################################################
scripts:
  - changed-files:
    - any-glob-to-any-file:
      - scripts/*
      - scripts/**/*

integrations:
  - changed-files:
    - any-glob-to-any-file:
      - integrations/*
      - integrations/**/*

docker:
  - changed-files:
    - any-glob-to-any-file:
      - integrations/docker/*
      - integrations/docker/**/*

vscode:
  - changed-files:
    - any-glob-to-any-file:
      - .vscode/*
      - .vscode/**/*
      - .devcontainer/*
      - .devcontainer/**/*

gn:
  - changed-files:
    - any-glob-to-any-file:
      - build/*
      - build/**/*
      - build_overrides/*
      - build_overrides/**/*
      - .gn
      - "*.gn"
      - "*.gni"

github:
  - changed-files:
    - any-glob-to-any-file:
      - .github
      - .github/*
      - .github/**/*

workflows:
  - changed-files:
    - any-glob-to-any-file:
      - .github/workflows/*
      - .github/workflows/**/*

tools:
  - changed-files:
    - any-glob-to-any-file:
      - src/tools/*
      - src/tools/**/*
      - tools/*
      - tools/**/*
      - examples/chip-tool/*
      - examples/chip-tool/**/*

############################################################
#  Tests
############################################################
tests:
  - changed-files:
    - any-glob-to-any-file:
      - src/python_testing/*
      - src/python_testing/**/*
      - src/app/tests/*
      - src/app/tests/**/*

test driver:
  - changed-files:
    - any-glob-to-any-file:
      - src/test_driver/*
      - src/test_driver/**/*

# Cert tests touched: add current milestone delta-tracking label.
# TODO: Change after Aug 15, 2024
matter-1.4-te2-script-change:
  - changed-files:
    - any-glob-to-any-file:
      - src/python_testing/*
      - src/python_testing/**/*
      - src/app/tests/suites/certification/*

############################################################
#  Source Code
############################################################
qr code:
  - changed-files:
    - any-glob-to-any-file:
      - src/qrcode/*
      - src/qrcode/**/*
      - src/qrcodetool/*
      - src/qrcodetool/**/*

lwip:
  - changed-files:
    - any-glob-to-any-file:
      - src/lwip/*
      - src/lwip/**/*

inet:
  - changed-files:
    - any-glob-to-any-file:
      - src/inet/*
      - src/inet/**/*

config:
  - changed-files:
    - any-glob-to-any-file:
      - config/*
      - config/**/*

lib:
  - changed-files:
    - any-glob-to-any-file:
      - src/lib/*
      - src/lib/**/*

core:
  - changed-files:
    - any-glob-to-any-file:
      - src/lib/core/*
      - src/lib/core/**/*

protocols:
  - changed-files:
    - any-glob-to-any-file:
      - src/lib/protocols/*
      - src/lib/protocols/**/*
      - src/protocols/*
      - src/protocols/**/*

messaging:
  - changed-files:
    - any-glob-to-any-file:
      - src/messaging/*
      - src/messaging/**/*

shell:
  - changed-files:
    - any-glob-to-any-file:
      - src/lib/shell/*
      - src/lib/shell/**/*

support:
  - changed-files:
    - any-glob-to-any-file:
      - src/lib/support/*
      - src/lib/support/**/*

crypto:
  - changed-files:
    - any-glob-to-any-file:
      - src/crypto/*
      - src/crypto/**/*

controller:
  - changed-files:
    - any-glob-to-any-file:
      - src/controller/*
      - src/controller/**/*

ble:
  - changed-files:
    - any-glob-to-any-file:
      - src/ble/*
      - src/ble/**/*

app:
  - changed-files:
    - any-glob-to-any-file:
      - src/app/*
      - src/app/**/*

icd:
  - changed-files:
    - any-glob-to-any-file:
      - src/app/icd/*
      - src/app/icd/**/*

transport:
  - changed-files:
    - any-glob-to-any-file:
      - src/transport/*
      - src/transport/**/*

system:
  - changed-files:
    - any-glob-to-any-file:
      - src/system/*
      - src/system/**/*

setup payload:
  - changed-files:
    - any-glob-to-any-file:
      - src/setup_payload/*
      - src/setup_payload/**/*

############################################################
#  Platforms
############################################################
platform:
  - changed-files:
    - any-glob-to-any-file:
      - src/platform/*
      - src/platform/**/*
      - config/tizen/chip-gn/platform/*
      - config/tizen/chip-gn/platform/**/*
      - examples/platform/*
      - examples/platform/**/*
      - scripts/tools/memory/platform/*
      - scripts/tools/memory/platform/**/*
      - src/include/platform/*
      - src/include/platform/**/*
      - src/lib/dnssd/platform/*
      - src/lib/dnssd/platform/**/*

darwin:
  - changed-files:
    - any-glob-to-any-file:
      - src/platform/Darwin/*
      - src/platform/Darwin/**/*
      - src/darwin/*
      - src/darwin/**/*
      - examples/darwin-framework-tool/*
      - examples/darwin-framework-tool/**/*

silabs:
  - changed-files:
    - any-glob-to-any-file:
      - examples/platform/silabs/*
      - examples/platform/silabs/**/*
      - src/platform/silabs/*
      - src/platform/silabs/**/*
      - src/test_driver/efr32/*
      - src/test_driver/efr32/**/*

esp32:
  - changed-files:
    - any-glob-to-any-file:
      - examples/platform/esp32/*
      - examples/platform/esp32/**/*
      - src/platform/ESP32/*
      - src/platform/ESP32/**/*
      - src/test_driver/esp32/*
      - src/test_driver/esp32/**/*

freeRTOS:
  - changed-files:
    - any-glob-to-any-file:
      - src/platform/FreeRTOS/*
      - src/platform/FreeRTOS/**/*

nxp:
  - changed-files:
    - any-glob-to-any-file:
      - examples/platform/nxp/*
      - examples/platform/nxp/**/*
      - src/platform/nxp/*
      - src/platform/nxp/**/*

linux:
  - changed-files:
    - any-glob-to-any-file:
      - examples/platform/linux/*
      - examples/platform/linux/**/*
      - src/platform/Linux/*
      - src/platform/Linux/**/*

nrf connect:
  - changed-files:
    - any-glob-to-any-file:
      - examples/platform/nrfconnect/*
      - examples/platform/nrfconnect/**/*
      - src/platform/nrfconnect/*
      - src/platform/nrfconnect/**/*
      - src/test_driver/nrfconnect/*
      - src/test_driver/nrfconnect/**/*

openthread:
  - changed-files:
    - any-glob-to-any-file:
      - src/platform/openthread/*
      - src/platform/openthread/**/*

zephyr:
  - changed-files:
    - any-glob-to-any-file:
      - src/platform/Zephyr/*
      - src/platform/Zephyr/**/*

telink:
  - changed-files:
    - any-glob-to-any-file:
      - examples/platform/telink/*
      - examples/platform/telink/**/*
      - src/platform/telink/*
      - src/platform/telink/**/*

tizen:
  - changed-files:
    - any-glob-to-any-file:
      - examples/platform/tizen/*
      - examples/platform/tizen/**/*
      - src/platform/Tizen/*
      - src/platform/Tizen/**/*
      - src/test_driver/tizen/*
      - src/test_driver/tizen/**/*
