diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index c9bdcc2..cb33a92 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1 +1,53 @@ -IyEvYmluL3NoCnNldCAtZQoKIyBHZW5lcmF0ZSBjb25maWcueWFtbCBmcm9tIGVudmlyb25tZW50IHZhcmlhYmxlcwpta2RpciAtcCAvYXBwL2NvbmZpZwoKY2F0ID4gL2FwcC9jb25maWcvY29uZmlnLnlhbWwgPDwgJ1lBTUxFT0YnCnNlcnZlcjoKICBwb3J0OiA4MDgwCiAgd2ViaG9va19zZWNyZXQ6ICIke0dJVEVBX1dFQkhPT0tfU0VDUkVUfSIKCmlkZW50aXR5OgogIHByb3ZpZGVyOiBnaXRlYQogIGNhY2hlX3R0bDogMjRoCiAgZ2l0ZWE6CiAgICB1cmw6ICIke0dJVEVBX1VSTH0iCiAgICB0b2tlbjogIiR7R0lURUFfQVBJX1RPS0VOfSIKCm5vdGlmaWNhdGlvbjoKICBwcm92aWRlcjogc2xhY2sKICBzbGFjazoKICAgIGJvdF90b2tlbjogIiR7U0xBQ0tfQk9UX1RPS0VOfSIKCmRhdGFiYXNlOgogIGRyaXZlcjogc3FsaXRlCiAgZHNuOiAiLi9kYXRhL25vdGlmaWNhdGlvbnMuZGIiCgpydWxlczoKICBwcjoKICAgIG5vdGlmeV9vd25lcjogdHJ1ZQogICAgbm90aWZ5X3Jldmlld2VyczogdHJ1ZQogICAgbm90aWZ5X2Fzc2lnbmVlczogdHJ1ZQogIGlzc3VlOgogICAgbm90aWZ5X2Fzc2lnbmVlczogdHJ1ZQogIGNvbW1lbnQ6CiAgICBub3RpZnlfbWVudGlvbmVkOiB0cnVlCiAgICBub3RpZnlfdGhyZWFkX293bmVyOiB0cnVlCiAgICBub3RpZnlfcmV2aWV3ZXJzOiB0cnVlCllBTUxFT0YKCiMgU2VlZCBtYW51YWwgdXNlciBtYXBwaW5ncyBmcm9tIE1BTlVBTF9VU0VSX01BUFBJTkdTIGVudiB2YXIgKEpTT046IHsiZ2l0ZWFfdXNlcm5hbWUiOiJzbGFja19pZCIsLi4ufSkKIyBUaGVzZSBieXBhc3MgdGhlIEdpdGVhIEFQSSBlbWFpbCBsb29rdXAgKyBTbGFjayBlbWFpbCBsb29rdXAgaWYgWyAtbiAiJE1BTlVBTF9VU0VSX01BUFBJTkdTIiBdOyB0aGVuCiAgICBlY2hvICIkTUFOVUFMX1VTRVJfTUFQUElOR1MiIHwganEgLXIgJ3RvX2VudHJpZXNbXSB8ICJcKC5rZXkpIFwoLnZhbHVlKSInIDI+L2Rldi9udWxsIHwgXAogICAgd2hpbGUgcmVhZCAtciBnaXRlYV91c2VyIHNsYWNrX2lkOyBkbwogICAgICAgIFsgLXogIiRnaXRlYV91c2VyIiBdICYmIGNvbnRpbnVlCiAgICAgICAgc3FsaXRlMyAvYXBwL2RhdGEvbm90aWZpY2F0aW9ucy5kYiBcCiAgICAgICAgICAgICJJTlNFUlQgT1IgUkVQTEFDRSBJTlRPIHVzZXJzKGdpdGVhX3VzZXJuYW1lLCBzbGFja19pZCwgc2xhY2tfbmFtZSwgdXBkYXRlZF9hdCkgVkFMVUVTKCckZ2l0ZWFfdXNlcicsJyRzbGFja19pZCcsJyRnaXRlYV91c2VyJyxkYXRldGltZSgnbm93JykpOyIgXAogICAgICAgICAgICAyPi9kZXYvbnVsbCB8fCB0cnVlCiAgICBkb25lCmZpCgpleGVjIC4vZ2l0ZWEtbm90aWZpY2F0aW9uLWh1YiAtY29uZmlnIC9hcHAvY29uZmlnL2NvbmZpZy55YW1sCg== \ No newline at end of file +#!/bin/sh +set -e + +# Generate config.yaml from environment variables +mkdir -p /app/config + +cat > /app/config/config.yaml << 'YAMLEOF' +server: + port: 8080 + webhook_secret: "${GITEA_WEBHOOK_SECRET}" + +identity: + provider: gitea + cache_ttl: 24h + gitea: + url: "${GITEA_URL}" + token: "${GITEA_API_TOKEN}" + +notification: + provider: slack + slack: + bot_token: "${SLACK_BOT_TOKEN}" + +database: + driver: sqlite + dsn: "./data/notifications.db" + +rules: + pr: + notify_owner: true + notify_reviewers: true + notify_assignees: true + issue: + notify_assignees: true + comment: + notify_mentioned: true + notify_thread_owner: true + notify_reviewers: true +YAMLEOF + +# Seed manual user mappings from MANUAL_USER_MAPPINGS env var (JSON: {"gitea_username":"slack_id",...}) +# These bypass the Gitea API email lookup + Slack email lookup +if [ -n "$MANUAL_USER_MAPPINGS" ]; then + echo "$MANUAL_USER_MAPPINGS" | jq -r 'to_entries[] | "\(.key) \(.value)"' 2>/dev/null | \ + while read -r gitea_user slack_id; do + [ -z "$gitea_user" ] && continue + sqlite3 /app/data/notifications.db \ + "INSERT OR REPLACE INTO users(gitea_username, slack_id, slack_name, updated_at) VALUES('$gitea_user','$slack_id','$gitea_user',datetime('now'));" \ + 2>/dev/null || true + done +fi + +exec ./gitea-notification-hub -config /app/config/config.yaml