# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you 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.

codecov:
  require_ci_to_pass: false

coverage:
  precision: 2
  round: down
  range: "50...90"
  status:
    project:
      default:
        informational: true
        target: auto
        threshold: 1%
    patch:
      default:
        informational: true
        target: 50%
        threshold: 5%

flag_management:
  default_rules:
    carryforward: true
    statuses:
      - type: project
        target: auto
        threshold: 1%
        informational: true
      - type: patch
        target: 50%
        threshold: 5%
        informational: true
  individual_flags:
    - name: rust
      paths:
        - core/
    - name: java
      paths:
        - foreign/java/
    - name: csharp
      paths:
        - foreign/csharp/
    - name: python
      paths:
        - foreign/python/
    - name: php
      paths:
        - foreign/php/
    - name: node
      paths:
        - foreign/node/
    - name: node-e2e
      paths:
        - foreign/node/
    - name: go
      paths:
        - foreign/go/

component_management:
  individual_components:
    - component_id: rust
      name: "Rust Core"
      paths:
        - core/
    - component_id: java
      name: "Java SDK"
      paths:
        - foreign/java/
    - component_id: csharp
      name: "C# SDK"
      paths:
        - foreign/csharp/
    - component_id: python
      name: "Python SDK"
      paths:
        - foreign/python/
    - component_id: php
      name: "PHP SDK"
      paths:
        - foreign/php/
    - component_id: node
      name: "Node SDK"
      paths:
        - foreign/node/
    - component_id: go
      name: "Go SDK"
      paths:
        - foreign/go/

comment:
  layout: "header, diff, components, files"
  behavior: default
  require_changes: true
  require_base: true
  require_head: true

ignore:
  - "core/bench/**"
  - "foreign/java/bench/**"
  - "core/integration/**"
  - "core/tools/**"
  - "core/harness_derive/**"
  - "bdd/**"
  - "examples/**"
  - "web/**"
  - "**/tests/**"
  - "**/*Test.java"
  - "**/test/**"
  - "**/build/**"
  - "**/target/**"
  - "**/e2e/**"
