sophuwu.site > myweb   
              65
            
             package config

import (
	"bytes"
	"log"
	"os"
	"path/filepath"
)

var (
	ListenAddr string
	WebRoot    string
	DbPath     string
	StaticPath string
	MediaPath  string
	Templates  string
	Email      string
	Name       string
	URL        string
)

func path(p string) string {
	return filepath.Join(WebRoot, p)
}

func init() {
	if len(os.Args) < 2 {
		log.Fatalf("Usage: %s <config file>", os.Args[0])
	}
	file, err := os.ReadFile(os.Args[1])
	if err != nil {
		log.Fatalf("Error opening config: %v", err)
	}

	var mm = make(map[string]string)
	var pos int

	for _, v := range bytes.Split(file, []byte{'\n'}) {
		if len(v) == 0 || (len(v) > 0 && v[0] == '#') || func() bool {
			pos = bytes.IndexByte(v, '=')
			return pos == -1
		}() {
			continue
		}
		mm[string(bytes.TrimSpace(v[:pos]))] = string(bytes.TrimSpace(v[pos+1:]))
	}
	ListenAddr = mm["address"] + ":" + mm["port"]
	if ListenAddr[len(ListenAddr)-1] == ':' {
		ListenAddr += "8085"
	}

	if len(mm["webroot"]) > 0 && mm["webroot"][0] == '/' {
		WebRoot = mm["webroot"]
	} else {
		WebRoot = filepath.Join(filepath.Dir(os.Args[1]), mm["webroot"])
	}
	DbPath = path("stuff.sqlite")
	StaticPath = path("static")
	MediaPath = path("media")
	Templates = path("templates/*")
	Email = mm["email"]
	Name = mm["name"]
	URL = mm["url"]

}