#
# 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.
#
header:
  license:
    spdx-id: Apache-2.0
    copyright-owner: Apache Software Foundation

  paths-ignore:
    - '.github/ISSUE_TEMPLATE'
    - '.github/PULL_REQUEST_TEMPLATE'
    - '**/.gitignore'
    - '.gitmodules'
    - '.lift'
    - '.mvn'
    - 'apm-protocol/apm-network/src/main/proto/.gitignore'
    - 'codeStyle.xml'
    - 'docker/.env'
    - 'dist'
    - 'licenses'
    - 'dist-material/release-docs'
    - '**/*.md'
    - '**/*.json'
    - '**/*.ftl'
    - '**/target/**'
    - '**/*.iml'
    - '**/*.ini'
    - '**/*.crt'
    - '**/*.pem'
    - 'LICENSE'
    - 'NOTICE'
    - 'skywalking-ui/dist'
    - 'skywalking-ui/node_modules'
    - 'skywalking-ui/node'
    - 'skywalking-ui/.browserslistrc'
    - 'skywalking-ui/.prettierrc'
    - 'skywalking-ui/src/types/auto-imports.d.ts'
    - 'skywalking-ui/src/types/components.d.ts'
    - '**/src/main/fbs/istio/**'
    - '**/src/main/proto/envoy/**'
    - '**/src/main/proto/udpa/**'
    - '**/src/main/proto/google/**'
    - '**/src/main/proto/istio/**'
    - '**/src/main/proto/jaeger/**'
    - '**/src/main/proto/mixer/**'
    - '**/src/main/proto/policy/**'
    - '**/src/main/proto/prometheus/client_model/metrics.proto'
    - '**/src/main/proto/protoc-gen-swagger/**'
    - '**/src/main/proto/validate/validate.proto'
    - '**/src/main/proto/opencensus/**'
    - '**/src/main/proto/opentelemetry/**'
    - 'oap-server/server-starter/src/main/resources/version.properties'

  comment: on-failure

dependency:
  files:
    - pom.xml
    - skywalking-ui/package.json
  excludes:
    - name: org.openjdk.jmh:jmh-core # We don't distribute the dependencies, they are just for the build process
    - name: org.apache.skywalking:* # Exclude self dependencies
  licenses:
    - name: org.slf4j:slf4j-api
      version: 1.7.30,1.7.32
      license: Apache-2.0
    - name: com.squareup.okhttp3:okhttp
      version: 3.14.9,3.12.2
      license: Apache-2.0
    - name: com.google.guava:listenablefuture
      version: 9999.0-empty-to-avoid-conflict-with-guava
      license: Apache-2.0
    - name: io.swagger:swagger-annotations
      version: 1.6.6
      license: Apache-2.0
    - name: com.squareup.okio:okio
      version: 1.15.0,1.17.2
      license: Apache-2.0
    - name: com.squareup.retrofit2:retrofit
      version: 2.3.0,2.5.0
      license: Apache-2.0
    - name: com.squareup.retrofit2:converter-jackson
      version: 2.3.0,2.5.0
      license: Apache-2.0
    - name: com.fasterxml.jackson.module:jackson-module-kotlin
      version: 2.13.1
      license: Apache-2.0
    - name: com.fasterxml.jackson.datatype:jackson-datatype-jsr310
      version: 2.13.2
      license: Apache-2.0
    - name: com.graphql-java:graphql-java-extended-scalars
      version: 17.0
      license: MIT
    - name: com.github.luben:zstd-jni
      version: 1.4.3-1
      license: BSD-2-Clause
    - name: com.h2database:h2
      version: 2.1.212
      license: MPL-2.0
    - name: org.antlr:antlr4-runtime
      version: 4.9.2
      license: BSD-3-Clause
    - name: com.google.flatbuffers:flatbuffers-java
      version: 1.12.0
      license: Apache-2.0
