Files
pkgstash/main.go
T

50 lines
887 B
Go

package main
import (
"flag"
"log"
"net/http"
"gitea.ewpt3ch.dev/ewpt3ch/pkgstash/internal/cache"
)
type Server struct {
cfg *Config
c *cache.Cache
}
func main() {
// set config from flag if available
var configPath string
flag.StringVar(&configPath, "config", "", "path to config file")
flag.Parse()
if len(configPath) == 0 {
configPath = "/etc/pkgstash/pkgstash.toml"
}
cfg, err := ReadConfig(configPath)
if err != nil {
log.Fatal(err)
}
c := cache.NewCache(cfg.CacheRoot, cfg.MirrorURL)
srv := &Server{cfg: cfg, c: c}
mux := http.NewServeMux()
mux.HandleFunc("GET /{repo}/os/{arch}/{file}", srv.handlePackage)
mux.HandleFunc("POST /api/refresh", srv.handlerRefresh)
if err := srv.c.Refresh(); err != nil {
log.Fatal(err)
}
httpServe := &http.Server{
Addr: ":" + srv.cfg.Port,
Handler: mux,
}
log.Fatal(httpServe.ListenAndServe())
}