gitea, notion webhook
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

43 lines
1.3 KiB

package main
import (
"flag"
"log/slog"
"os"
"git/palnet/slack-notifier/internal/config"
"git/palnet/slack-notifier/internal/logging"
"git/palnet/slack-notifier/internal/mapping"
"git/palnet/slack-notifier/internal/notion"
"git/palnet/slack-notifier/internal/server"
"git/palnet/slack-notifier/internal/slack"
)
func main() {
// 실행 환경은 명령어 플래그로 분기한다 (예: `slack-notifier -env prod`).
// 미지정 시 APP_ENV 환경변수 → 그래도 없으면 dev.
envFlag := flag.String("env", "", "실행 환경: dev | prod")
flag.Parse()
cfg := config.Load(*envFlag)
// Slack 클라이언트를 먼저 만들어 로깅에 주입한다 — Error 로그를 모니터 채널로 알리기 위함.
slackClient := slack.New(cfg.SlackBotToken)
logging.Setup(cfg, slackClient)
store, err := mapping.New(cfg.MappingFile)
if err != nil {
slog.Error("failed to load mapping store", "file", cfg.MappingFile, "err", err)
os.Exit(1)
}
notionClient := notion.New(cfg.NotionAPIToken, cfg.NotionAssigneeProperty)
srv := server.New(cfg, slackClient, store, notionClient)
slog.Info("slack-notifier starting", "addr", cfg.Addr, "log_level", cfg.LogLevel, "log_format", cfg.LogFormat)
if err := srv.Router().Run(cfg.Addr); err != nil {
slog.Error("server stopped", "err", err)
os.Exit(1)
}
}