add workflow to build

This commit is contained in:
roman.nikolsky
2026-07-04 01:56:10 +03:00
commit af098e6ec4
14 changed files with 1701 additions and 0 deletions
+72
View File
@@ -0,0 +1,72 @@
package main
import (
"context"
"log"
"os"
"os/signal"
"syscall"
"time"
"github.com/labstack/echo/v4"
"github.com/user/ytdlp-navidrome/internal/bot"
"github.com/user/ytdlp-navidrome/internal/config"
"github.com/user/ytdlp-navidrome/internal/health"
)
func main() {
cfg := config.Load()
// Setup logging
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
log.Printf("Starting ytdlp-navidrome service...")
log.Printf("Log level: %s", cfg.LogLevel)
log.Printf("Proxy enabled: %v, URL: %s", cfg.ProxyEnabled, cfg.ProxyURL)
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
// Start health HTTP server
e := echo.New()
e.HideBanner = true
e.HidePort = true
startTime := time.Now()
healthChecker := health.NewChecker(cfg.YtdlpPath, cfg.ProxyURL)
e.GET("/healthz", healthChecker.Handler(startTime))
go func() {
log.Printf("HTTP server listening on %s", cfg.ListenAddr)
if err := e.Start(cfg.ListenAddr); err != nil {
log.Printf("HTTP server stopped: %v", err)
}
}()
// Start Matrix bot
b := bot.New(cfg)
go func() {
log.Printf("Matrix bot connecting...")
if err := b.Start(ctx); err != nil {
log.Fatalf("Matrix bot error: %v", err)
}
}()
log.Printf("Service started. PID: %d", os.Getpid())
// Wait for shutdown signal
sigCh := make(chan os.Signal, 1)
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
sig := <-sigCh
log.Printf("Received signal %v, shutting down...", sig)
// Graceful shutdown
shutdownCtx, shutdownCancel := context.WithTimeout(context.Background(), 10*time.Second)
defer shutdownCancel()
if err := e.Shutdown(shutdownCtx); err != nil {
log.Printf("HTTP server shutdown error: %v", err)
}
cancel()
log.Printf("Service stopped.")
}