diff options
author | Ben Morrison <ben@gbmor.dev> | 2019-06-09 04:00:21 -0400 |
---|---|---|
committer | Ben Morrison <ben@gbmor.dev> | 2019-06-09 04:00:21 -0400 |
commit | 7410b8cd74d0f702b087577b1793bcf541ac8371 (patch) | |
tree | dbc1aa568abc43fd7048d0587eecbb2a4d950cbb | |
parent | 7f76158b9565d804ada682c1a9aa83c22cb8de71 (diff) | |
download | getwtxt-7410b8cd74d0f702b087577b1793bcf541ac8371.tar.gz |
init staticAssets explicitly on startup
-rw-r--r-- | svc/cache.go | 36 | ||||
-rw-r--r-- | svc/conf.go | 9 | ||||
-rw-r--r-- | svc/init.go | 8 | ||||
-rw-r--r-- | svc/init_test.go | 1 |
4 files changed, 44 insertions, 10 deletions
diff --git a/svc/cache.go b/svc/cache.go index 0963892..e2078d7 100644 --- a/svc/cache.go +++ b/svc/cache.go @@ -2,6 +2,7 @@ package svc // import "github.com/getwtxt/getwtxt/svc" import ( "bytes" + "html/template" "io/ioutil" "os" "sync" @@ -24,6 +25,41 @@ type staticAssets struct { cssMod time.Time } +func initTemplates() *template.Template { + confObj.Mu.RLock() + assetsDir := confObj.AssetsDir + confObj.Mu.RUnlock() + + return template.Must(template.ParseFiles(assetsDir + "/tmpl/index.html")) +} + +func initAssets() *staticAssets { + confObj.Mu.RLock() + defer confObj.Mu.RUnlock() + + css, err := os.Open(confObj.AssetsDir + "/style.css") + errLog("", err) + cssStat, err := css.Stat() + errLog("", err) + cssData, err := ioutil.ReadAll(css) + errLog("", err) + + indStat, err := os.Stat(confObj.AssetsDir + "/tmpl/index.html") + errLog("", err) + + var b []byte + buf := bytes.NewBuffer(b) + errLog("", tmpls.ExecuteTemplate(buf, "index.html", confObj.Instance)) + + return &staticAssets{ + mu: sync.RWMutex{}, + index: buf.Bytes(), + indexMod: indStat.ModTime(), + css: cssData, + cssMod: cssStat.ModTime(), + } +} + func cacheTimer() bool { confObj.Mu.RLock() answer := time.Since(confObj.LastCache) > confObj.CacheInterval diff --git a/svc/conf.go b/svc/conf.go index 9099477..5f4233b 100644 --- a/svc/conf.go +++ b/svc/conf.go @@ -1,7 +1,6 @@ package svc // import "github.com/getwtxt/getwtxt/svc" import ( - "html/template" "log" "os" "path/filepath" @@ -40,14 +39,6 @@ type Instance struct { Desc string `yaml:"Instance.Description"` } -func initTemplates() *template.Template { - confObj.Mu.RLock() - assetsDir := confObj.AssetsDir - confObj.Mu.RUnlock() - - return template.Must(template.ParseFiles(assetsDir + "/tmpl/index.html")) -} - func initLogging() { confObj.Mu.RLock() diff --git a/svc/init.go b/svc/init.go index 4408ecf..d585bfa 100644 --- a/svc/init.go +++ b/svc/init.go @@ -5,6 +5,7 @@ import ( "log" "os" "os/signal" + "sync" "time" "github.com/getwtxt/registry" @@ -36,7 +37,10 @@ var tmpls *template.Template var twtxtCache = registry.NewIndex() -var remoteRegistries = &RemoteRegistries{} +var remoteRegistries = &RemoteRegistries{ + Mu: sync.RWMutex{}, + List: make([]string, 0), +} var staticCache = &staticAssets{} @@ -63,7 +67,9 @@ func initSvc() { initDatabase() go cacheAndPush() tmpls = initTemplates() + staticCache = initAssets() watchForInterrupt() + pingAssets() } func checkFlags() { diff --git a/svc/init_test.go b/svc/init_test.go index 11a1593..8fd8e95 100644 --- a/svc/init_test.go +++ b/svc/init_test.go @@ -23,6 +23,7 @@ func initTestConf() { testConfig() tmpls = testTemplates() + staticCache = initAssets() confObj.Mu.RLock() defer confObj.Mu.RUnlock() |