debian-forge-composer/cmd/osbuild-composer/main.go
Ondřej Budai 6d15833e4e store: introduce state directory
Prior to this commit outputs directory used by local target was owned by root.
This made impossible for osbuild-composer to delete images. (osbuild-composer
doesn't run as root).

This commit introduces state directory in which osbuild-composer creates
outputs directory. Because this directory is owned by osbuild-composer, it's
able to delete files inside.
2019-12-10 01:14:36 +01:00

55 lines
1.1 KiB
Go

package main
import (
"flag"
"log"
"os"
"github.com/osbuild/osbuild-composer/internal/distro"
"github.com/osbuild/osbuild-composer/internal/jobqueue"
"github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/store"
"github.com/osbuild/osbuild-composer/internal/weldr"
"github.com/coreos/go-systemd/activation"
)
func main() {
var verbose bool
flag.BoolVar(&verbose, "v", false, "Print access log")
flag.Parse()
stateDir := "/var/lib/osbuild-composer"
listeners, err := activation.Listeners()
if err != nil {
panic(err)
}
if len(listeners) != 2 {
panic("Unexpected number of sockets. Composer require 2 of them.")
}
weldrListener := listeners[0]
jobListener := listeners[1]
rpm := rpmmd.NewRPMMD()
distribution, err := distro.FromHost()
if err != nil {
panic("cannot detect distro from host: " + err.Error())
}
var logger *log.Logger
if verbose {
logger = log.New(os.Stdout, "", 0)
}
store := store.New(&stateDir, distribution)
jobAPI := jobqueue.New(logger, store)
weldrAPI := weldr.New(rpm, distribution, logger, store)
go jobAPI.Serve(jobListener)
weldrAPI.Serve(weldrListener)
}