From a6a7710a798021e71dab41fc99daa3a4a8766236 Mon Sep 17 00:00:00 2001 From: Harvey Tindall Date: Mon, 8 Feb 2021 12:03:22 +0000 Subject: [PATCH] use filepath.Join wrapper for different embed and os path styles If using internal, "/" is used as a separator always, and with external, filepath.Join is used. --- embed.py | 7 +++++++ go.mod | 6 +++--- go.sum | 8 ++++++++ router.go | 2 +- setup.go | 2 +- storage.go | 8 ++++---- 6 files changed, 24 insertions(+), 9 deletions(-) diff --git a/embed.py b/embed.py index 5d4586c..d420031 100755 --- a/embed.py +++ b/embed.py @@ -35,6 +35,11 @@ type rewriteFS struct { func (l rewriteFS) Open(name string) (fs.File, error) { return l.fs.Open(l.prefix + name) } func (l rewriteFS) ReadDir(name string) ([]fs.DirEntry, error) { return l.fs.ReadDir(l.prefix + name) } func (l rewriteFS) ReadFile(name string) ([]byte, error) { return l.fs.ReadFile(l.prefix + name) } +func FSJoin(elem ...string) string { + out := "" + for _, v := range elem { out += v + "/" } + return out[:len(out)-1] +} func loadFilesystems() { langFS = rewriteFS{laFS, "lang/"} @@ -53,6 +58,8 @@ import ( var localFS fs.FS var langFS fs.FS +func FSJoin(elem ...string) string { return filepath.Join(elem...) } + func loadFilesystems() { log.Println("Using external storage") executable, _ := os.Executable() diff --git a/go.mod b/go.mod index 393aaf3..acf5aa8 100644 --- a/go.mod +++ b/go.mod @@ -20,8 +20,7 @@ require ( github.com/gin-gonic/gin v1.6.3 github.com/go-chi/chi v4.1.2+incompatible // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/spec v0.20.1 // indirect - github.com/go-openapi/swag v0.19.13 // indirect + github.com/go-openapi/spec v0.20.3 // indirect github.com/go-playground/validator/v10 v10.4.1 // indirect github.com/gofrs/uuid v3.3.0+incompatible // indirect github.com/golang/protobuf v1.4.3 @@ -36,7 +35,7 @@ require ( github.com/lithammer/shortuuid/v3 v3.0.4 github.com/logrusorgru/aurora/v3 v3.0.0 github.com/mailgun/mailgun-go/v4 v4.3.0 - github.com/mailru/easyjson v0.7.6 // indirect + github.com/mailru/easyjson v0.7.7 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.1 // indirect github.com/pdrum/swagger-automation v0.0.0-20190629163613-c8c7c80ba858 @@ -51,6 +50,7 @@ require ( golang.org/x/net v0.0.0-20210119194325-5f4716e94777 // indirect golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c // indirect golang.org/x/text v0.3.5 // indirect + golang.org/x/tools v0.1.0 // indirect google.golang.org/protobuf v1.25.0 // indirect gopkg.in/ini.v1 v1.62.0 ) diff --git a/go.sum b/go.sum index 0dba103..9619579 100644 --- a/go.sum +++ b/go.sum @@ -102,6 +102,8 @@ github.com/go-openapi/spec v0.20.0 h1:HGLc8AJ7ynOxwv0Lq4TsnwLsWMawHAYiJIFzbcML86 github.com/go-openapi/spec v0.20.0/go.mod h1:+81FIL1JwC5P3/Iuuozq3pPE9dXdIEGxFutcFKaVbmU= github.com/go-openapi/spec v0.20.1 h1:5WNKTzPguDN+79wbJw2UE2q+eX+gUmEFsIKSvnSQJlc= github.com/go-openapi/spec v0.20.1/go.mod h1:93x7oh+d+FQsmsieroS4cmR3u0p/ywH649a3qwC9OsQ= +github.com/go-openapi/spec v0.20.3 h1:uH9RQ6vdyPSs2pSy9fL8QPspDF2AMIMPtmK5coSSjtQ= +github.com/go-openapi/spec v0.20.3/go.mod h1:gG4F8wdEDN+YPBMVnzE85Rbhf+Th2DTvA9nFPQ5AYEg= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= @@ -116,6 +118,8 @@ github.com/go-openapi/swag v0.19.12 h1:Bc0bnY2c3AoF7Gc+IMIAQQsD8fLHjHpc19wXvYuay github.com/go-openapi/swag v0.19.12/go.mod h1:eFdyEBkTdoAf/9RXBvj4cr1nH7GD8Kzo5HTt47gr72M= github.com/go-openapi/swag v0.19.13 h1:233UVgMy1DlmCYYfOiFpta6e2urloh+sEs5id6lyzog= github.com/go-openapi/swag v0.19.13/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= +github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= @@ -235,6 +239,8 @@ github.com/mailru/easyjson v0.7.3 h1:M6wcO9gFHCIPynXGu4iA+NMs//FCgFUWR2jxqV3/+Xk github.com/mailru/easyjson v0.7.3/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= @@ -457,6 +463,8 @@ golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20201120155355-20be4ac4bd6e h1:t96dS3DO8DGjawSLJL/HIdz8CycAd2v07XxqB3UPTi0= golang.org/x/tools v0.0.0-20201120155355-20be4ac4bd6e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/router.go b/router.go index b6720c3..cdbd93a 100644 --- a/router.go +++ b/router.go @@ -29,7 +29,7 @@ func (app *appContext) loadHTML(router *gin.Engine) { for i, f := range htmlFiles { if _, err := os.Stat(filepath.Join(customPath, f.Name())); os.IsNotExist(err) { app.debug.Printf("Using default \"%s\"", f.Name()) - loadFiles[i] = filepath.Join(templatePath, f.Name()) + loadFiles[i] = FSJoin(templatePath, f.Name()) } else { app.info.Printf("Using custom \"%s\"", f.Name()) loadFiles[i] = filepath.Join(filepath.Join(customPath, f.Name())) diff --git a/setup.go b/setup.go index a1771f8..1e29bc6 100644 --- a/setup.go +++ b/setup.go @@ -77,7 +77,7 @@ func (st *Storage) loadLangSetup(filesystems ...fs.FS) error { load := func(filesystem fs.FS, fname string) error { index := strings.TrimSuffix(fname, filepath.Ext(fname)) lang := setupLang{} - f, err := fs.ReadFile(filesystem, filepath.Join(st.lang.SetupPath, fname)) + f, err := fs.ReadFile(filesystem, FSJoin(st.lang.SetupPath, fname)) if err != nil { return err } diff --git a/storage.go b/storage.go index b89c8f3..5100a81 100644 --- a/storage.go +++ b/storage.go @@ -127,7 +127,7 @@ func (st *Storage) loadLangCommon(filesystems ...fs.FS) error { load := func(filesystem fs.FS, fname string) error { index := strings.TrimSuffix(fname, filepath.Ext(fname)) lang := commonLang{} - f, err := fs.ReadFile(filesystem, filepath.Join(st.lang.CommonPath, fname)) + f, err := fs.ReadFile(filesystem, FSJoin(st.lang.CommonPath, fname)) if err != nil { return err } @@ -183,7 +183,7 @@ func (st *Storage) loadLangAdmin(filesystems ...fs.FS) error { load := func(filesystem fs.FS, fname string) error { index := strings.TrimSuffix(fname, filepath.Ext(fname)) lang := adminLang{} - f, err := fs.ReadFile(filesystem, filepath.Join(st.lang.AdminPath, fname)) + f, err := fs.ReadFile(filesystem, FSJoin(st.lang.AdminPath, fname)) if err != nil { return err } @@ -247,7 +247,7 @@ func (st *Storage) loadLangForm(filesystems ...fs.FS) error { load := func(filesystem fs.FS, fname string) error { index := strings.TrimSuffix(fname, filepath.Ext(fname)) lang := formLang{} - f, err := fs.ReadFile(filesystem, filepath.Join(st.lang.FormPath, fname)) + f, err := fs.ReadFile(filesystem, FSJoin(st.lang.FormPath, fname)) if err != nil { return err } @@ -316,7 +316,7 @@ func (st *Storage) loadLangEmail(filesystems ...fs.FS) error { load := func(filesystem fs.FS, fname string) error { index := strings.TrimSuffix(fname, filepath.Ext(fname)) lang := emailLang{} - f, err := fs.ReadFile(filesystem, filepath.Join(st.lang.EmailPath, fname)) + f, err := fs.ReadFile(filesystem, FSJoin(st.lang.EmailPath, fname)) if err != nil { return err }