Skip to content

Commit

Permalink
confetti-framework#108 use embed to load templates
Browse files Browse the repository at this point in the history
  • Loading branch information
Reindert Vetter committed Apr 4, 2021
1 parent d507bd5 commit 4bda9da
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 17 deletions.
10 changes: 5 additions & 5 deletions app/providers/view_service_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,17 @@ func addFunctions(templateBuilder *template.Template) *template.Template {

// Register your view templates.
func addTemplates(templateBuilder *template.Template) (*template.Template, error) {
if t, _ := templateBuilder.ParseGlob(config.Path.Views + "/*/*/*/*/*.gohtml"); t != nil {
if t, _ := templateBuilder.ParseFS(config.Embed.Views, "*/*/*/*/*.gohtml"); t != nil {
templateBuilder = t
}
if t, _ := templateBuilder.ParseGlob(config.Path.Views + "/*/*/*/*.gohtml"); t != nil {
if t, _ := templateBuilder.ParseFS(config.Embed.Views, "*/*/*/*.gohtml"); t != nil {
templateBuilder = t
}
if t, _ := templateBuilder.ParseGlob(config.Path.Views + "/*/*/*.gohtml"); t != nil {
if t, _ := templateBuilder.ParseFS(config.Embed.Views, "*/*/*.gohtml"); t != nil {
templateBuilder = t
}
if t, _ := templateBuilder.ParseGlob(config.Path.Views + "/*/*.gohtml"); t != nil {
if t, _ := templateBuilder.ParseFS(config.Embed.Views, "*/*.gohtml"); t != nil {
templateBuilder = t
}
return templateBuilder.ParseGlob(config.Path.Views + "/*.gohtml")
return templateBuilder.ParseFS(config.Embed.Views, "*.gohtml")
}
13 changes: 13 additions & 0 deletions config/embed.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package config

import (
"embed"
"src/resources/views"
)

// Embed contains fields of all resources to be loaded during compile time.
var Embed = struct {
Views embed.FS
}{
Views: views.Views,
}
1 change: 1 addition & 0 deletions config/index.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ var Index = map[string]interface{}{
"Path": Path,
"Errors": Errors,
"Logging": Logging,
"Embed": Embed,
}
12 changes: 6 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module src

go 1.15
go 1.16

require (
github.com/confetti-framework/contract v0.2.1
Expand All @@ -9,9 +9,9 @@ require (
github.com/confetti-framework/support v0.3.1
github.com/confetti-framework/syslog v0.1.1
github.com/confetti-framework/validation v0.1.0
github.com/lunixbochs/vtclean v1.0.0 // indirect
github.com/mattn/go-colorable v0.1.8 // indirect
github.com/tidwall/pretty v1.1.0 // indirect
golang.org/x/text v0.3.5
golang.org/x/tools v0.1.0 // indirect
golang.org/x/text v0.3.6
)

replace (
github.com/confetti-framework/foundation v0.7.1 => ../foundation
)
14 changes: 14 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,15 @@ github.com/confetti-framework/foundation v0.6.0 h1:MbIDJAmz6E7ypR7lJs2rqViIJjdLP
github.com/confetti-framework/foundation v0.6.0/go.mod h1:j12Lh6+sisa/+qNmIjIUcmVOo1c+iEZ0ReZxHcs6HGw=
github.com/confetti-framework/foundation v0.7.0 h1:y+ZJhX1NNCBTQleYb/9y/cSeA0w7O3t3aGURoXj71jg=
github.com/confetti-framework/foundation v0.7.0/go.mod h1:vf/AFYTJUvSij3Y0RPVvpqJ52ODX61obF/+hTPInLNk=
github.com/confetti-framework/foundation v0.7.1 h1:SDT8vUnxZJprkwahG+cNrR7yEe0xy3ZZTUfT4ERKPWo=
github.com/confetti-framework/foundation v0.7.1/go.mod h1:hfByJjIm3tUYmxXnu8enjXq2gVyvyPxV7LCVKoweA6g=
github.com/confetti-framework/support v0.2.0-rc.1/go.mod h1:uwOTcc+vAtkzr5GihkCzjv11YVI15UJMhfU2HLRCk/A=
github.com/confetti-framework/support v0.2.3 h1:AOzZVtPeJlZBExW2SjYY3R3973ytve2FvmZoETqluN8=
github.com/confetti-framework/support v0.2.3/go.mod h1:HtyauB5vd5R+85mwosRpD0h6InS39HDJfKpkjXzdU3s=
github.com/confetti-framework/support v0.3.0 h1:Pg1g7rX5RgmyKQ3ZD1i1KXv5Llo16JGBTsbRtaAR8z4=
github.com/confetti-framework/support v0.3.0/go.mod h1:uKZGENz+fvUglW6uEq070WDA/scgByuxcfQOyiuScgM=
github.com/confetti-framework/support v0.3.1 h1:gLk8oqjvZ5dcK3GGCl9hKIBVQG1GakZOeAGzu/vsCDY=
github.com/confetti-framework/support v0.3.1/go.mod h1:uKZGENz+fvUglW6uEq070WDA/scgByuxcfQOyiuScgM=
github.com/confetti-framework/syslog v0.1.0-rc/go.mod h1:O6eT3y5cYDGQSVT6lrhScB5NKdylG0R304PmGiChm7Y=
github.com/confetti-framework/syslog v0.1.1 h1:ZYea1UXjp/m1DajS6regPislq+kUhe6+/RpNzCaJ8js=
github.com/confetti-framework/syslog v0.1.1/go.mod h1:O6eT3y5cYDGQSVT6lrhScB5NKdylG0R304PmGiChm7Y=
Expand Down Expand Up @@ -68,6 +72,8 @@ github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-runewidth v0.0.10 h1:CoZ3S2P7pvtP45xOtBw+/mDL2z0RKI576gSkzRRpdGg=
github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
github.com/mattn/go-runewidth v0.0.12 h1:Y41i/hVW3Pgwr8gV+J23B9YEY0zxjptBuCWEaxmAOow=
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ=
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
github.com/motemen/go-quickfix v0.0.0-20200118031250-2a6e54e79a50 h1:LKXuJ8pSlacZRgcNFoN2OHehByrDxJesflgC/tH7aBM=
Expand Down Expand Up @@ -95,6 +101,8 @@ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5Cc
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/tidwall/gjson v1.6.8 h1:CTmXMClGYPAmln7652e69B7OLXfTi5ABcPPwjIWUv7w=
github.com/tidwall/gjson v1.6.8/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI=
github.com/tidwall/gjson v1.7.4 h1:19cchw8FOxkG5mdLRkGf9jqIqEyqdZhPqW60XfyFxk8=
github.com/tidwall/gjson v1.7.4/go.mod h1:5/xDoumyyDNerp2U36lyolv46b3uF/9Bu6OfyQ9GImk=
github.com/tidwall/match v1.0.3 h1:FQUVvBImDutD8wJLN6c5eMzWtjgONK9MwIBCOrUJKeE=
github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
Expand All @@ -113,6 +121,8 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqt
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210317152858-513c2a44f670 h1:gzMM0EjIYiRmJI3+jBdFuoynZlpxa2JQZsolKu09BXo=
golang.org/x/crypto v0.0.0-20210317152858-513c2a44f670/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w=
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
Expand Down Expand Up @@ -145,6 +155,8 @@ golang.org/x/sys v0.0.0-20210309074719-68d13333faf2 h1:46ULzRKLh1CwgRq2dC5SlBzEq
golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210319071255-635bc2c9138d h1:jbzgAvDZn8aEnytae+4ou0J0GwFZoHR0hOrTg4qH8GA=
golang.org/x/sys v0.0.0-20210319071255-635bc2c9138d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57 h1:F5Gozwx4I1xtr/sr/8CFbb57iKi3297KFs0QDbGN60A=
golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
Expand All @@ -157,6 +169,8 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200117220505-0cba7a3a9ee9/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
Expand Down
9 changes: 5 additions & 4 deletions resources/views/error.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
package views

import (
_ "embed"
"fmt"
"github.com/confetti-framework/contract/inter"
"github.com/confetti-framework/errors"
"github.com/confetti-framework/support/str"
"src/config"
"strings"
)

//go:embed error.gohtml
var errorHtml string

// Error provide an error view
func Error(app inter.App, err error) inter.View {
status, _ := errors.FindStatus(err)
Expand All @@ -19,7 +22,6 @@ func Error(app inter.App, err error) inter.View {
Status: status,
AppName: AppName(app),
Locale: Locale(app),
template: config.Path.Views + "/error.gohtml",
}
}

Expand All @@ -30,10 +32,9 @@ type ErrorView struct {
Status int
AppName string
Locale string
template string
}

// Template returns the template path
func (e ErrorView) Template() string {
return e.template
return errorHtml
}
7 changes: 5 additions & 2 deletions resources/views/homepage.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package views

import (
_ "embed"
"github.com/confetti-framework/contract/inter"
"src/config"
)

//go:embed homepage.gohtml
var homepageHtml string

// Homepage provide the homepage view
func Homepage(app inter.App, title string, description string) *HomepageView {
return &HomepageView{
Expand All @@ -23,5 +26,5 @@ type HomepageView struct {

// Template returns the template path
func (h HomepageView) Template() string {
return config.Path.Views + "/homepage.gohtml"
return homepageHtml
}
8 changes: 8 additions & 0 deletions resources/views/index.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package views

import "embed"

// Views provides a collection of all views and templates. This is to load all
// predefined templates.
//go:embed *
var Views embed.FS

0 comments on commit 4bda9da

Please sign in to comment.