# 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:
    - ./*

############################################################
#  Examples
############################################################
examples:
    - examples/*
    - examples/**/*

############################################################
#  Documentation
############################################################
documentation:
    - docs/*
    - docs/**/*
    - "*.md"

############################################################
#  Tools + Development Items
############################################################
scripts:
    - scripts/*
    - scripts/**/*

integrations:
    - integrations/*
    - integrations/**/*

docker:
    - integrations/docker/*
    - integrations/docker/**/*

vscode:
    - .vscode/*
    - .vscode/**/*
    - .devcontainer/*
    - .devcontainer/**/*

gn:
    - build/*
    - build/**/*
    - build_overrides/*
    - build_overrides/**/*
    - .gn
    - "*.gn"
    - "*.gni"

github:
    - .github
    - .github/*
    - .github/**/*

workflows:
    - .github/workflows/*
    - .github/workflows/**/*

tools:
    - src/tools/*
    - src/tools/**/*
    - tools/*
    - tools/**/*
    - examples/chip-tool/*
    - examples/chip-tool/**/*

############################################################
#  Tests
############################################################
tests:
    - src/app/tests/*
    - src/app/tests/**/*

test driver:
    - src/test_driver/*
    - src/test_driver/**/*

############################################################
#  Source Code
############################################################
qr code:
    - src/qrcode/*
    - src/qrcode/**/*
    - src/qrcodetool/*
    - src/qrcodetool/**/*

lwip:
    - src/lwip/*
    - src/lwip/**/*

inet:
    - src/inet/*
    - src/inet/**/*

config:
    - config/*
    - config/**/*

lib:
    - src/lib/*
    - src/lib/**/*

core:
    - src/lib/core/*
    - src/lib/core/**/*

protocols:
    - src/lib/protocols/*
    - src/lib/protocols/**/*

shell:
    - src/lib/shell/*
    - src/lib/shell/**/*

support:
    - src/lib/support/*
    - src/lib/support/**/*

crypto:
    - src/crypto/*
    - src/crypto/**/*

controller:
    - src/controller/*
    - src/controller/**/*

ble:
    - src/ble/*
    - src/ble/**/*

app:
    - src/app/*
    - src/app/**/*

icd:
    - src/app/icd/*
    - src/app/icd/**/*

transport:
    - src/transport/*
    - src/transport/**/*

system:
    - src/system/*
    - src/system/**/*

setup payload:
    - src/setup_payload/*
    - src/setup_payload/**/*

############################################################
#  Platforms
############################################################
platform:
    - 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:
    - src/platform/Darwin/*
    - src/platform/Darwin/**/*
    - src/darwin/*
    - src/darwin/**/*
    - examples/darwin-framework-tool/*
    - examples/darwin-framework-tool/**/*

silabs:
    - src/platform/silabs/*
    - src/platform/silabs/**/*

esp32:
    - src/platform/ESP32/*
    - src/platform/ESP32/**/*

freeRTOS:
    - src/platform/FreeRTOS/*
    - src/platform/FreeRTOS/**/*

k32w:
    - src/platform/K32W/*
    - src/platform/K32W/**/*

linux:
    - src/platform/Linux/*
    - src/platform/Linux/**/*

nrf connect:
    - src/platform/nrfconnect/*
    - src/platform/nrfconnect/**/*

openthread:
    - src/platform/openthread/*
    - src/platform/openthread/**/*

zephyr:
    - src/platform/Zephyr/*
    - src/platform/Zephyr/**/*

telink:
    - src/platform/telink/*
    - src/platform/telink/**/*

tizen:
    - src/platform/Tizen/*
    - src/platform/Tizen/**/*
