package main

import (
	"flag"
	"net"
	"os"
	"strings"

	"github.com/coreos/go-systemd/v22/activation"
)

var (
	addr       = flag.String("addr", "", "TCP listen address or UNIX socket path")
	useSystemd = flag.Bool("systemd-activation", false, "use systemd activation")
)

func newSystemdListener() (net.Listener, error) {
	listeners, err := activation.Listeners()
	if err != nil {
		return nil, err
	}
	return listeners[0], nil
}

func newListener() (net.Listener, error) {
	if *useSystemd {
		return newSystemdListener()
	}

	network := "tcp"
	address := *addr
	if strings.HasPrefix(address, "unix:") {
		network = "unix"
		address = address[5:]
		os.Remove(address)
	}
	return net.Listen(network, address)
}