mirror of
https://tvoygit.ru/Djam/r11_urpm-repo.git
synced 2025-02-24 02:32:47 +00:00
76 lines
No EOL
1.7 KiB
Go
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
|
|
} |