# 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.

github:
  description: "Apache StreamPipes - A self-service (Industrial) IoT toolbox to enable non-technical users to connect, analyze and explore IoT data streams."
  homepage: https://streampipes.apache.org
  labels:
    - iot
    - iiot
    - edge
    - analytics
    - stream-processing
    - self-service
    - opcua
    - s7
    - iot-platform
    - iot-analytics
    - microservices
    - dashboard

  features:
    wiki: false
    issues: true
    projects: false
    discussions: true

  custom_subjects:
    new_pr: "[PR] {title}"
    close_pr: "Re: [PR] {title}"
    comment_pr: "Re: [PR] {title}"
    diffcomment: "Re: [PR] {title}"
    merge_pr: "Re: [PR] {title}"
    new_issue: "[I] {title}"
    comment_issue: "Re: [I] {title}"
    close_issue: "Re: [I] {title}"
    catchall: "[GH] {title}"
    new_discussion: "[D] {title}"
    edit_discussion: "Re: [D] {title}"
    close_discussion: "Re: [D] {title}"
    close_discussion_with_comment: "Re: [D] {title}"
    reopen_discussion: "Re: [D] {title}"
    new_comment_discussion: "Re: [D] {title}"
    edit_comment_discussion: "Re: [D] {title}"
    delete_comment_discussion: "Re: [D] {title}"

  del_branch_on_merge: true

  protected_branches:
    dev:
      required_status_checks:
        strict: true


notifications:
  jobs: issues@streampipes.apache.org
  commits: commits@streampipes.apache.org
  issues: issues@streampipes.apache.org
  discussions: dev@streampipes.apache.org
  pullrequests_status:  dev@streampipes.apache.org
  pullrequests_comment: dev@streampipes.apache.org
  pullrequests_bot_dependabot: commits@streampipes.apache.org
