git.sophuwu.com > manhttpd   
              78
            
             package CFG

import (
	"net/http"
	"os"
	"os/exec"
	"sophuwu.site/manhttpd/neterr"
	"strings"
)

var (
	Hostname string
	Port     string
	Mandoc   string
	DbCmd    string
	ManCmd   string
	Server   http.Server
	Addr     string
)

func init() {
	var e error
	var b []byte
	var s string
	if s = os.Getenv("HOSTNAME"); s != "" {
		Hostname = s
	} else if s, e = os.Hostname(); e == nil {
		Hostname = s
	} else if b, e = os.ReadFile("/etc/hostname"); e == nil {
		Hostname = strings.TrimSpace(string(b))
	}
	if Hostname == "" {
		Hostname = "Unresolved"
	}

	if b, e = exec.Command("which", func() string {
		if s = os.Getenv("MANDOCPATH"); s != "" {
			return s
		}
		return "mandoc"
	}()).Output(); e != nil || len(b) == 0 {
		neterr.Fatal("dependency `mandoc` not found in $PATH, is it installed?\n")
	} else {
		Mandoc = strings.TrimSpace(string(b))
	}
	f := func(s string) string {
		if b, e = exec.Command("which", s).Output(); e != nil || len(b) == 0 {
			return ""
		}
		return strings.TrimSpace(string(b))
	}

	if s = f("man"); s == "" {
		neterr.Fatal("dependency `man` not found. `man` and its libraries are required for manhttpd to function.")
	} else {
		ManCmd = s
	}

	if s = f("apropos"); s == "" {
		neterr.Fatal("dependency `apropos` not found. `apropos` is required for search functionality.")
	} else {
		DbCmd = s
	}

	Port = os.Getenv("ListenPort")
	if Port == "" {
		Port = "8082"
	}
	Addr = os.Getenv("ListenAddr")
	if Addr == "" {
		Addr = "0.0.0.0"
	}

	Server = http.Server{
		Addr:    Addr + ":" + Port,
		Handler: nil,
	}
}