r11_urpm-repo/main.go
2025-01-13 19:23:44 +03:00

76 lines
No EOL
1.7 KiB
Go

package main
import (
"net/http"
"os"
"github.com/go-chi/chi/v5"
"github.com/spf13/viper"
"github.com/kardianos/service"
"log"
)
var srv service.Service
func main() {
viper.SetConfigName("config")
viper.AddConfigPath(".")
if err := viper.ReadInConfig(); err != nil {
log.Fatalf("Error reading config file, %s", err)
}
initLogger()
repo := NewRepository()
router := chi.NewRouter()
router.Post("/{arch}", repo.UploadHandler)
svcConfig := &service.Config{
Name: "urpm-repo",
DisplayName: "URPM Repository Service",
Description: "Service for managing URPM packages",
}
s, err := service.New(&serviceProgram{repo, router}, svcConfig)
if err != nil {
logger.Fatal(err)
}
if len(os.Args) > 1 {
if os.Args[1] == "install" {
if err := s.Install(); err != nil {
logger.Fatal(err)
}
return
} else if os.Args[1] == "uninstall" {
if err := s.Uninstall(); err != nil {
logger.Fatal(err)
}
return
}
}
if err := s.Run(); err != nil {
logger.Fatal(err)
}
}
type serviceProgram struct {
repo *Repository
router *chi.Mux
}
func (p *serviceProgram) Start(s service.Service) error {
logger.Info("Starting URPM Repository Service...")
go func() {
if err := http.ListenAndServe(viper.GetString("server.address"), p.router); err != nil {
logger.Error(err)
}
}()
return nil
}
func (p *serviceProgram) Stop(s service.Service) error {
logger.Info("Stopping URPM Repository Service...")
return nil
}