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

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

# Lake Database Connection String
DB_URL=merico:merico@tcp(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=
