# Copyright 2013 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# See https://github.com/actions/labeler/blob/main/README.md for docs.
# Use git ls-files ':(glob)<pattern>' to see the list of matching files.

'a: accessibility':
  - changed-files:
    - any-glob-to-any-file:
      - '**/accessibility/*'
      - '**/*accessibility*'
      - '**/semantics/*'
      - '**/*semantics*'

'a: animation':
  - changed-files:
    - any-glob-to-any-file:
      - '**/animation/*'
      - '**/*animation*'

'a: desktop':
  - changed-files:
    - any-glob-to-any-file:
      - '**/linux/**/*'
      - '**/macos/**/*'
      - '**/windows/**/*'
      - engine/src/flutter/shell/platform/darwin/common/**/*

'a: internationalization':
  - changed-files:
    - any-glob-to-any-file:
      - packages/flutter_localizations/**/*

'a: tests':
  - changed-files:
    - any-glob-to-any-file:
      - packages/flutter_driver/**/*
      - packages/flutter_goldens/**/*
      - packages/flutter_test/**/*
      - packages/integration_test/**/*

'a: text input':
  - changed-files:
    - all-globs-to-any-file:
      - '**/*[tT]ext*'
      - '!**/*[cC]ontext*'
      - '!**/*[tT]exture*'

'd: api docs':
  - changed-files:
    - any-glob-to-any-file:
      - examples/api/**/*

'd: docs/':
  - changed-files:
    - any-glob-to-any-file:
      - docs/**/*

'd: examples':
  - changed-files:
    - any-glob-to-any-file:
      - examples/**/*

'e: embedder':
  - changed-files:
    - any-glob-to-any-file:
      - engine/src/flutter/shell/platform/embedder

'e: impeller':
  - changed-files:
    - any-glob-to-any-file:
      - engine/src/flutter/impeller/**/*

flutter-gpu:
  - changed-files:
    - any-glob-to-any-file:
      - engine/src/flutter/lib/gpu/**/*
      - engine/src/flutter/testing/dart/gpu_test*

engine:
  - changed-files:
    - any-glob-to-any-file:
      - DEPS
      - engine/**/*
      - docs/engine/**/*

'f: cupertino':
  - changed-files:
    - any-glob-to-any-file:
      - '**/cupertino/*'
      - '**/*cupertino*'
      - docs/libraries/cupertino/**/*

'f: focus':
  - changed-files:
    - any-glob-to-any-file:
      - '**/focus/*'
      - '**/*focus*'

'f: gestures':
  - changed-files:
    - any-glob-to-any-file:
      - '**/gestures/*'
      - '**/*gestures*'

'f: material design':
  - changed-files:
    - any-glob-to-any-file:
      - '**/material/*'
      - '**/*material*'
      - docs/libraries/material/**/*

'f: routes':
  - changed-files:
    - any-glob-to-any-file:
      - '**/navigator/*'
      - '**/*navigator*'
      - '**/route/*'
      - '**/*route*'

'f: scrolling':
  - changed-files:
    - any-glob-to-any-file:
      - '**/*scroll*'
      - '**/scroll/*'
      - '**/*sliver*'
      - '**/sliver/*'
      - '**/*viewport*'
      - '**/viewport/*'

framework:
  - changed-files:
    - any-glob-to-any-file:
      - packages/flutter/**/*
      - packages/flutter_driver/**/*
      - packages/flutter_goldens/**/*
      - packages/flutter_localizations/**/*
      - packages/flutter_test/**/*
      - packages/integration_test/**/*
      - examples/api/**/*
      - docs/about/**/*
      - docs/contributing/**/*
      - docs/libraries/**/*

'f: integration_test':
  - changed-files:
    - any-glob-to-any-file:
      - packages/integration_test/**/*

package:
  - changed-files:
    - any-glob-to-any-file:
      - docs/ecosystem/**/*

platform-android:
  - changed-files:
    - any-glob-to-any-file:
      - docs/platform/android/**/*
      - engine/src/flutter/shell/platform/android/**/*
      - packages/flutter_tools/*android*
      - packages/flutter_tools/gradle/**/*

platform-ios:
  - changed-files:
    - any-glob-to-any-file:
      - engine/src/flutter/shell/platform/darwin/common/**/*
      - engine/src/flutter/shell/platform/darwin/ios/**/*
      - packages/flutter_tools/lib/src/ios/**/*

platform-fuchsia:
  - changed-files:
    - any-glob-to-any-file:
      - engine/src/flutter/shell/platform/fuchsia/**/*

platform-linux:
  - changed-files:
    - any-glob-to-any-file:
      - engine/src/flutter/shell/platform/linux/**/*
      - packages/flutter_tools/lib/src/linux/**/*

platform-macos:
  - changed-files:
    - any-glob-to-any-file:
      - engine/src/flutter/src/flutter/shell/platform/darwin/common/**/*
      - engine/src/flutter/shell/platform/darwin/macos/**/*
      - packages/flutter_tools/lib/src/macos/**/*

platform-web:
  - changed-files:
    - any-glob-to-any-file:
      - '**/web_sdk/**/*'
      - engine/src/flutter/lib/web_ui/**/*
      - packages/flutter_web_plugins

platform-windows:
  - changed-files:
    - any-glob-to-any-file:
      - engine/src/flutter/shell/platform/windows/**/*
      - packages/flutter_tools/lib/src/windows/**/*

'customer: gallery':
  - changed-files:
    - any-glob-to-any-file:
      - examples/flutter_gallery/**/*

'c: tech-debt':
  - changed-files:
    - any-glob-to-any-file:
      - '**/fix_data.yaml'
      - '**/*.expect'
      - '**/*test_fixes*'
'c: contributor-productivity':
  - changed-files:
    - any-glob-to-any-file:
      - docs/contributing/**/*

# Keep this synced with CODEOWNERS.
team-android:
  - changed-files:
    - any-glob-to-any-file:
      - docs/platform/android/**/*
      - engine/src/flutter/shell/platform/android/**/*
      - packages/flutter_tools/**/*android*
      - packages/flutter_tools/**/*gradle*

team-ecosystem:
  - changed-files:
    - any-glob-to-any-file:
      - docs/ecosystem/**/*

team-engine:
  - changed-files:
    - any-glob-to-any-file:
      - docs/engine/**/*

team-fluttergpu:
  - changed-files:
    - any-glob-to-any-file:
      - engine/src/flutter/lib/gpu/**/*
      - engine/src/flutter/testing/dart/gpu_test*
      - docs/fluttergpu/**/*

team-infra:
  - changed-files:
    - any-glob-to-any-file:
      - docs/infra/**/*
      - docs/releases/**/*

# Keep this synced with CODEOWNERS.
team-ios:
  - changed-files:
    - any-glob-to-any-file:
      - engine/src/flutter/shell/platform/darwin/common/**/*
      - engine/src/flutter/shell/platform/darwin/ios/framework/**/*
      - dev/integration_tests/*ios*/**/*
      - dev/integration_tests/*macos*/**/*
      - dev/integration_tests/*darwin*/**/*
      - packages/flutter_tools/**/ios/*
      - packages/flutter_tools/**/macos/*
      - packages/flutter_tools/**/*xcode*
      - packages/flutter_tools/**/*darwin*
      - packages/flutter_tools/**/*swift*
      - packages/flutter_tools/**/*pod*
      - packages/flutter_tools/**/*ios*
      - packages/flutter_tools/**/*macos*

# Keep this synced with CODEOWNERS.
team-linux:
  - changed-files:
    - any-glob-to-any-file:
      - engine/src/flutter/shell/platform/linux/**/*
      - packages/flutter_tools/**/linux/*
      - packages/flutter_tools/**/*linux*

# Keep this synced with CODEOWNERS.
team-macos:
  - changed-files:
    - any-glob-to-any-file:
      - engine/src/flutter/shell/platform/darwin/common/**/*
      - engine/src/flutter/shell/platform/darwin/macos/**/*
      - dev/integration_tests/*macos*/**/*
      - dev/integration_tests/*darwin*/**/*
      - packages/flutter_tools/**/macos/*
      - packages/flutter_tools/**/*xcode*
      - packages/flutter_tools/**/*darwin*
      - packages/flutter_tools/**/*swift*
      - packages/flutter_tools/**/*pod*
      - packages/flutter_tools/**/*macos*

# Keep this synced with CODEOWNERS.
team-windows:
  - changed-files:
    - any-glob-to-any-file:
      - engine/src/flutter/shell/platform/windows/**/*
      - packages/flutter_tools/**/windows/*
      - packages/flutter_tools/**/*windows*

team-tool:
  - changed-files:
    - any-glob-to-any-file:
      - docs/tool/**/*

team-web:
  - changed-files:
    - any-glob-to-any-file:
      - dev/**/*web*
      - dev/**/*web*/**/*
      - docs/platforms/web/**/*
      - engine/src/flutter/lib/web_ui/**/*
      - engine/src/flutter/web_sdk/**/*

tool:
  - changed-files:
    - any-glob-to-any-file:
      - packages/flutter_tools/**/*
      - packages/fuchsia_remote_debug_protocol/**/*
      - docs/tool/**/*
