package config
import (
"bytes"
_ "embed"
"fmt"
"io/ioutil"
"log"
"os"
"path/filepath"
"strings"
"time"
"gitea.inhome.blapointe.com/local/args"
)
var (
Root string
Port string
Head string
Foot string
OAuthServer string
VersionInterval time.Duration
ReadOnly bool
MaxSizeMB int
)
func init() {
Refresh()
}
func Refresh() {
if strings.Contains(fmt.Sprint(os.Args), " -test") {
return
}
as := args.NewArgSet()
as.Append(args.STRING, "root", "root dir path", "./public")
as.Append(args.STRING, "port", "port to listen on", "49909")
as.Append(args.STRING, "wrap", "file with http header/footer", "")
as.Append(args.STRING, "oauth", "oauth URL", "")
as.Append(args.DURATION, "version", "duration to mark versions", "0s")
as.Append(args.BOOL, "ro", "read-only mode", false)
as.Append(args.INT, "max-v-size", "max size in mb for versioning", 2)
if err := as.Parse(); err != nil {
panic(err)
}
wrap := as.GetString("wrap")
var b []byte
if len(wrap) > 0 {
log.Printf("reading %v (%T)", wrap, wrap)
var err error
b, err = ioutil.ReadFile(wrap)
if err != nil {
panic(err)
}
} else {
b = []byte(defaultWrapper)
}
bs := bytes.Split(b, []byte("{{{}}}"))
if len(bs) != 2 {
panic(len(bs))
}
Root = strings.TrimSuffix(as.GetString("root"), "/")
Root, _ = filepath.Abs(Root)
Port = ":" + strings.TrimPrefix(as.GetString("port"), ":")
Head = string(bs[0])
Foot = string(bs[1])
OAuthServer = as.GetString("oauth")
VersionInterval = as.GetDuration("version")
ReadOnly = as.GetBool("ro")
MaxSizeMB = as.GetInt("max-v-size")
}
//go:embed water.css.txt
var waterCSS string
var defaultWrapper = `