#
# 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.
#
notifications:
  commits:              commits@airavata.apache.org
  # Send all issue emails (new, closed, comments) to issues@
  issues:               issues@airavata.apache.org
  # Send new/closed PR notifications to dev@
  pullrequests_status:  dev@airavata.apache.org
  # Send individual PR comments/reviews to issues@
  pullrequests_comment: issues@airavata.apache.org

github:
  description: "Apache Airavata Managed File Transfer Services"
  homepage: https://airavata.apache.org
  labels:
    - airavata
    - apache
    - file-ransfers
    - mft

  features:
    wiki: false
    issues: true
    projects: true
