#############
# Lake core #
#############

# Lake plugin dir, absolute path or relative path
PLUGIN_DIR=bin/plugins

# Lake Database Connection String
DB_URL=mysql://merico:merico@mysql:3306/lake?charset=utf8mb4&parseTime=True
# Silent Error Warn Info
DB_LOGGING_LEVEL=Error

# Lake REST API
PORT=:8080
MODE=release

NOTIFICATION_ENDPOINT=
NOTIFICATION_SECRET=

API_TIMEOUT=10s
API_RETRY=3
API_REQUESTS_PER_HOUR=10000
#TEMPORAL_URL=temporal:7233
TEMPORAL_URL=
TEMPORAL_TASK_QUEUE=
# Debug Info Warn Error
LOGGING_LEVEL=

########################
# Docker configuration #
########################

COMPOSE_PROFILES=user

######################
# Jira configuration #
######################

# Jira configuration has been migrated into MySQL #

########################
# Gitlab configuration #
########################

GITLAB_ENDPOINT=https://gitlab.com/api/v4/
GITLAB_AUTH=
GITLAB_PROXY=
GITLAB_API_REQUESTS_PER_HOUR=

##########################
# Jira <> Gitlab mapping #
##########################

# Lake maintains a many-to-many relationship between Jira boards and Gitlab projects
# Format:
#   JIRA_BOARD_GITLAB_PROJECTS=JIRA_BOARD_ID1:GITLAB_PROJECT_ID1,PROJECT_ID2;JIRA_BOARD_ID2:...
JIRA_BOARD_GITLAB_PROJECTS=

#########################
# Jenkins configuration #
#########################

JENKINS_ENDPOINT=
JENKINS_USERNAME=
JENKINS_PASSWORD=
JENKINS_PROXY=
JENKINS_API_REQUESTS_PER_HOUR=

#########################
# Feishu configuration #
#########################

FEISHU_APPID=
FEISHU_APPSCRECT=
FEISHU_ENDPOINT=https://open.feishu.cn/open-apis/vc/v1/

########################
# GitHub configuration #
########################

GITHUB_ENDPOINT=https://api.github.com/
GITHUB_AUTH=***
GITHUB_PROXY=
GITHUB_API_REQUESTS_PER_HOUR=
# GITHUB_PR_TYPE=type/(.*)$ the program will extract the value in (), in this example, you will get "refactor" from "type/refactor"
GITHUB_PR_TYPE='type/(.*)$'
# GITHUB_PR_COMPONENT=component/(.*)$ the program will extract the value in (), in this example, you will get "plugins" from "component/plugins"
GITHUB_PR_COMPONENT='component/(.*)$'
# GITHUB_ISSUE_SEVERITY=severity/(.*)$ the program will extract the value in (), in this example, you will get "refactor" from "type/refactor"
GITHUB_ISSUE_SEVERITY='severity/(.*)$'
# GITHUB_ISSUE_COMPONENT=component/(.*)$ the program will extract the value in (), in this example, you will get "refactor" from "type/refactor"
GITHUB_ISSUE_COMPONENT='component/(.*)$'
GITHUB_ISSUE_PRIORITY='^(highest|high|medium|low)$'
GITHUB_ISSUE_TYPE_BUG='^(bug|failure|error)$'
GITHUB_ISSUE_TYPE_REQUIREMENT='^(feat|feature|proposal|requirement)$'
GITHUB_ISSUE_TYPE_INCIDENT=
# GITHUB_PR_BODY_CLOSE_PATTERN='(?mi)(fix|close|resolve|fixes|closes|resolves|fixed|closed|resolved)[\s]*.*(((and )?(#|https:\/\/github.com\/%s\/%s\/issues\/)\d+[ ]*)+)'
GITHUB_PR_BODY_CLOSE_PATTERN='(?mi)(fix|close|resolve|fixes|closes|resolves|fixed|closed|resolved)[\s]*.*(((and )?(#|https:\/\/github.com\/%s\/%s\/issues\/)\d+[ ]*)+)'
# GITHUB_PR_TITLE_PATTERN='.*\(#(\d+)\)'
GITHUB_PR_TITLE_PATTERN='.*\(#(\d+)\)'

##########################
# AE (Merico-Analysis-Engine) configuration #
##########################
AE_APP_ID=
AE_SECRET_KEY=
AE_ENDPOINT=
AE_RATE_LIMIT=100
AE_PROXY=

##########################
# Sensitive information encryption key
##########################
ENCODE_KEY=
