feat: add new features such as database watchdog
This commit is contained in:
+38
-17
@@ -1,44 +1,65 @@
|
||||
package runtime
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type Environment struct {
|
||||
Version string
|
||||
Codename string
|
||||
Hostname string
|
||||
Port string
|
||||
WorkDir string
|
||||
Version string
|
||||
Codename string
|
||||
DataDirectory string
|
||||
ContentDirectory string
|
||||
Hostname string
|
||||
Port int
|
||||
WatchInterval int
|
||||
}
|
||||
|
||||
func safeGrab(key, fallback string) string {
|
||||
// part of environment checking
|
||||
func safeStringGrab(key, fallback string) string {
|
||||
if v, ok := os.LookupEnv(key); ok {
|
||||
return v
|
||||
}
|
||||
return fallback
|
||||
}
|
||||
|
||||
func safeIntGrab(key string, fallback int) int {
|
||||
if v, ok := os.LookupEnv(key); ok {
|
||||
if i, err := strconv.Atoi(v); err == nil {
|
||||
return i
|
||||
}
|
||||
}
|
||||
return fallback
|
||||
}
|
||||
|
||||
func GrabEnvironment() Environment {
|
||||
cwd, err := os.Getwd()
|
||||
if err != nil {
|
||||
cwd = "."
|
||||
}
|
||||
|
||||
fbBase := filepath.Join(cwd, "data")
|
||||
fbContent := filepath.Join(fbBase, "content")
|
||||
|
||||
return Environment{
|
||||
Version: safeGrab("VERSION", "0.0.1"),
|
||||
Codename: safeGrab("CODENAME", "Magical Anomaly"),
|
||||
Hostname: safeGrab("HOSTNAME", "0.0.0.0"),
|
||||
Port: safeGrab("PORT", "8080"),
|
||||
WorkDir: safeGrab("OPERATIONDIR", "."),
|
||||
Version: safeStringGrab("VERSION", "0.0.1"),
|
||||
Codename: safeStringGrab("CODENAME", "Magical Anomaly"),
|
||||
DataDirectory: safeStringGrab("DATA_DIR", fbBase),
|
||||
ContentDirectory: safeStringGrab("CONTENT_DIR", fbContent),
|
||||
Hostname: safeStringGrab("HOSTNAME", "0.0.0.0"),
|
||||
|
||||
Port: safeIntGrab("PORT", 8080),
|
||||
WatchInterval: safeIntGrab("WATCHDOG_INTERVAL", 60),
|
||||
}
|
||||
}
|
||||
|
||||
// part of filesystem checking
|
||||
func EnsureOperation(workDir string) error {
|
||||
slog.Info("starting audit on: " + workDir)
|
||||
|
||||
nDirs := []string{
|
||||
workDir,
|
||||
filepath.Join(workDir, "content"),
|
||||
filepath.Join(workDir, "content", "fresh"),
|
||||
filepath.Join(workDir, "content", "archive"),
|
||||
filepath.Join(workDir, "data"),
|
||||
filepath.Join(workDir, "data", "content"),
|
||||
filepath.Join(workDir, "web"),
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user