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

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/**/*

efr32:
    - src/platform/efr32/*
    - src/platform/efr32/**/*

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/**/*
