#
# 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 Flagon UserALE.js is a comprehensive, thin-client behavioral logging tool"
  homepage: https://flagon.apache.org/
  labels:
    - flagon
    - apache
    - behavioral-analytics
    - business-analytics
    - usability
    - usage
    - user-monitoring
    - node-js
    - node
    - js
    - javascript
    - npm-package
    - npmjs
    - behavioral-sciences
  features:
    # Enable issues management
    issues: true
    # Enable projects for project management boards
    projects: true
    wiki: true

  #Make auto-generated github emails easier to read/parse
  custom_subjects:
    new_pr: "[PR] {title} ({repository})"
    close_pr: "Re: [PR] {title} ({repository})"
    comment_pr: "Re: [PR] {title} ({repository})"
    diffcomment: "Re: [PR] {title} ({repository})"
    merge_pr: "Re: [PR] {title} ({repository})"
    new_issue: "[I] {title} ({repository})"
    comment_issue: "Re: [I] {title} ({repository})"
    close_issue: "Re: [I] {title} ({repository})"
    catchall: "[GH] {title} ({repository})"

#manages alerts by distributing to lists
notifications:
  commits:              commits@flagon.apache.org
  issues:               notifications@flagon.apache.org
  pullrequests_status:  pr@flagon.apache.org
  pullrequests_comment: notifications@flagon.apache.org
  # Send dependabot PRs to commits@ instead
  pullrequests_bot_dependabot: maintenance@flagon.apache.org