debian-forge-composer/main.go
2019-09-13 18:50:13 +02:00

57 lines
1 KiB
Go

package main
import (
"context"
"net"
"net/http"
"os"
"os/signal"
"osbuild-composer/rpmmd"
"osbuild-composer/weldr"
)
type Composer struct{}
func (c *Composer) Repositories() []string {
return []string{"fedora-30"}
}
func (c *Composer) RepositoryConfig(name string) (rpmmd.RepoConfig, bool) {
if name != "fedora-30" {
return rpmmd.RepoConfig{}, false
}
return rpmmd.RepoConfig{
Id: "fedora-30",
Name: "Fedora 30",
Metalink: "https://mirrors.fedoraproject.org/metalink?repo=fedora-30&arch=x86_64",
}, true
}
func main() {
listener, err := net.Listen("unix", "/run/weldr/api.socket")
if err != nil {
panic(err)
}
composer := Composer{}
api := weldr.New(&composer)
server := http.Server{Handler: api}
shutdownDone := make(chan struct{}, 1)
go func() {
channel := make(chan os.Signal, 1)
signal.Notify(channel, os.Interrupt)
<-channel
server.Shutdown(context.Background())
close(shutdownDone)
}()
err = server.Serve(listener)
if err != nil && err != http.ErrServerClosed {
panic(err)
}
<-shutdownDone
}