diff options
author | silverwind <me@silverwind.io> | 2020-07-12 11:10:56 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-12 12:10:56 +0300 |
commit | 8188176b588264fe0ff8e3f82a623ea007a1af41 (patch) | |
tree | 0dd469b25f45c5a40ee62916b40162985753972a /modules/svg | |
parent | 63591016b3ecd79ab1172cd98e2e830a09d6f515 (diff) | |
download | gitea-8188176b588264fe0ff8e3f82a623ea007a1af41.tar.gz gitea-8188176b588264fe0ff8e3f82a623ea007a1af41.zip |
Direct SVG rendering (#12157)
Introduce 'make svg' which calls a node script that compiles svg files
to `public/img/svg`. These files are vendored to not create a dependency
on Node for the backend build.
On the frontend side, configure webpack using `raw-loader` so SVGs can
be imported as string.
Also moved our existing SVGs to web_src/svg for consistency.
Fixes: https://github.com/go-gitea/gitea/issues/11618
Diffstat (limited to 'modules/svg')
-rw-r--r-- | modules/svg/discover_bindata.go | 32 | ||||
-rw-r--r-- | modules/svg/discover_nobindata.go | 31 | ||||
-rw-r--r-- | modules/svg/svg.go | 13 |
3 files changed, 76 insertions, 0 deletions
diff --git a/modules/svg/discover_bindata.go b/modules/svg/discover_bindata.go new file mode 100644 index 0000000000..51fd8a4a6c --- /dev/null +++ b/modules/svg/discover_bindata.go @@ -0,0 +1,32 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +// +build bindata + +package svg + +import ( + "path" + "path/filepath" + + "code.gitea.io/gitea/modules/public" +) + +// Discover returns a map of discovered SVG icons in bindata +func Discover() map[string]string { + svgs := make(map[string]string) + + for _, file := range public.AssetNames() { + matched, _ := filepath.Match("img/svg/*.svg", file) + if matched { + content, err := public.Asset(file) + if err == nil { + filename := path.Base(file) + svgs[filename[:len(filename)-4]] = string(content) + } + } + } + + return svgs +} diff --git a/modules/svg/discover_nobindata.go b/modules/svg/discover_nobindata.go new file mode 100644 index 0000000000..04ce447de8 --- /dev/null +++ b/modules/svg/discover_nobindata.go @@ -0,0 +1,31 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +// +build !bindata + +package svg + +import ( + "io/ioutil" + "path" + "path/filepath" + + "code.gitea.io/gitea/modules/setting" +) + +// Discover returns a map of discovered SVG icons in the file system +func Discover() map[string]string { + svgs := make(map[string]string) + + files, _ := filepath.Glob(path.Join(setting.StaticRootPath, "public", "img", "svg", "*.svg")) + for _, file := range files { + content, err := ioutil.ReadFile(file) + if err == nil { + filename := path.Base(file) + svgs[filename[:len(filename)-4]] = string(content) + } + } + + return svgs +} diff --git a/modules/svg/svg.go b/modules/svg/svg.go new file mode 100644 index 0000000000..1d1f8a90eb --- /dev/null +++ b/modules/svg/svg.go @@ -0,0 +1,13 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package svg + +// SVGs contains discovered SVGs +var SVGs map[string]string + +// Init discovers SVGs and populates the `SVGs` variable +func Init() { + SVGs = Discover() +} |