Compare commits

..

No commits in common. "614a654824372aaa81131c17122bd3463c006baa" and "91f2ef06c09b7dce9c5a9708f6d9d40ee157a90f" have entirely different histories.

2 changed files with 28 additions and 42 deletions

28
data.go
View file

@ -32,7 +32,6 @@ type Config struct {
Legal string `json:"legal" toml:"legal"` Legal string `json:"legal" toml:"legal"`
RelMeLinks []string `json:"rel_me_links" toml:"rel_me_links"` RelMeLinks []string `json:"rel_me_links" toml:"rel_me_links"`
CustomPages []string `json:"custom_pages" toml:"custom_pages"` CustomPages []string `json:"custom_pages" toml:"custom_pages"`
folder string
} }
type Person struct { type Person struct {
@ -83,6 +82,23 @@ func getImage(s string) string {
return golatt.GetStaticPath(s) return golatt.GetStaticPath(s)
} }
func getPath(filename string) string {
if !strings.Contains(configPath, "/") {
return filename
}
sp := strings.Split(configPath, "/")
before := strings.Join(sp[1:len(sp)-1], "/")
if configPath[0] != '/' && !strings.HasPrefix(configPath, "./") {
if len(before) == 0 {
before = sp[0]
} else {
before = sp[0] + "/" + before
}
}
before += "/"
return before + filename
}
func (c *Config) GetBackground() template.CSS { func (c *Config) GetBackground() template.CSS {
return c.Color.GetBackground() return c.Color.GetBackground()
} }
@ -103,7 +119,7 @@ var legalContent template.HTML
func (c *Config) GetLegal() (template.HTML, error) { func (c *Config) GetLegal() (template.HTML, error) {
if legalContent == "" { if legalContent == "" {
b, err := os.ReadFile(c.folder + c.Legal) b, err := os.ReadFile(getPath(c.Legal))
if err != nil { if err != nil {
return "", err return "", err
} }
@ -119,7 +135,6 @@ type CustomPage struct {
Description string `json:"description" toml:"description"` Description string `json:"description" toml:"description"`
Color *Color `json:"colors" toml:"colors"` Color *Color `json:"colors" toml:"colors"`
Content string `json:"content" toml:"content"` Content string `json:"content" toml:"content"`
folder string
} }
func (c *Config) LoadCustomPages() ([]*CustomPage, error) { func (c *Config) LoadCustomPages() ([]*CustomPage, error) {
@ -129,7 +144,7 @@ func (c *Config) LoadCustomPages() ([]*CustomPage, error) {
} }
var pages []*CustomPage var pages []*CustomPage
for _, cp := range c.CustomPages { for _, cp := range c.CustomPages {
b, err := os.ReadFile(c.folder + cp) b, err := os.ReadFile(getPath(cp))
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -144,9 +159,6 @@ func (c *Config) LoadCustomPages() ([]*CustomPage, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
p.folder = getFolder(c.folder + cp)
pages = append(pages, &p) pages = append(pages, &p)
} }
return pages, nil return pages, nil
@ -201,7 +213,7 @@ var contentsMap = map[string]template.HTML{}
func (p *CustomPage) GetContent() (template.HTML, error) { func (p *CustomPage) GetContent() (template.HTML, error) {
res, ok := contentsMap[p.URI] res, ok := contentsMap[p.URI]
if !ok { if !ok {
b, err := os.ReadFile(p.folder + p.Content) b, err := os.ReadFile(getPath(p.Content))
if err != nil { if err != nil {
return "", err return "", err
} }

42
main.go
View file

@ -22,19 +22,17 @@ var (
) )
var ( var (
domain string domain string
configPath string configPath string
publicDirPath string dev = false
dev = false generateToml bool
generateToml bool generateJson bool
generateJson bool port = 80
port = 80
) )
func init() { func init() {
flag.StringVar(&domain, "domain", "", "domain to use") flag.StringVar(&domain, "domain", "", "domain to use")
flag.StringVar(&configPath, "config", "", "config to use") flag.StringVar(&configPath, "config", "", "config to use")
flag.StringVar(&publicDirPath, "public-dir", "", "public directory to use, default is 'public' inside the folder of your config")
flag.BoolVar(&dev, "dev", dev, "dev mode enabled") flag.BoolVar(&dev, "dev", dev, "dev mode enabled")
flag.BoolVar(&generateJson, "generate-json-config", false, "generate a config example") flag.BoolVar(&generateJson, "generate-json-config", false, "generate a config example")
flag.BoolVar(&generateToml, "generate-toml-config", false, "generate a config example") flag.BoolVar(&generateToml, "generate-toml-config", false, "generate a config example")
@ -77,30 +75,22 @@ func main() {
if err != nil { if err != nil {
panic(err) panic(err)
} }
cfg.folder = getFolder(configPath)
customPages, err := cfg.LoadCustomPages() customPages, err := cfg.LoadCustomPages()
if err != nil { if err != nil {
panic(err) panic(err)
} }
publicFolder := cfg.folder + "public"
if len(publicDirPath) != 0 {
publicFolder = publicDirPath
}
var g *golatt.Golatt var g *golatt.Golatt
if dev { if dev {
g = golatt.New( g = golatt.New(
golatt.UsableEmbedFS("templates", templates), golatt.UsableEmbedFS("templates", templates),
os.DirFS(publicFolder), os.DirFS(getPath("public")),
os.DirFS("dist"), os.DirFS("dist"),
) )
} else { } else {
g = golatt.New( g = golatt.New(
golatt.UsableEmbedFS("templates", templates), golatt.UsableEmbedFS("templates", templates),
os.DirFS(publicFolder), os.DirFS(getPath("public")),
golatt.UsableEmbedFS("dist", assets), golatt.UsableEmbedFS("dist", assets),
) )
} }
@ -158,22 +148,6 @@ func main() {
} }
} }
func getFolder(path string) string {
if !strings.Contains(path, "/") {
return ""
}
sp := strings.Split(path, "/")
folder := strings.Join(sp[1:len(sp)-1], "/")
if path[0] != '/' && !strings.HasPrefix(path, "./") {
if len(folder) == 0 {
folder = sp[0]
} else {
folder = sp[0] + "/" + folder
}
}
return folder + "/"
}
func generateConfigFile(isToml bool) { func generateConfigFile(isToml bool) {
cfg := Config{ cfg := Config{
Image: "wallpaper.webp", Image: "wallpaper.webp",