summaryrefslogtreecommitdiffstats
path: root/modules/svg
diff options
context:
space:
mode:
authorsilverwind <me@silverwind.io>2020-07-12 11:10:56 +0200
committerGitHub <noreply@github.com>2020-07-12 12:10:56 +0300
commit8188176b588264fe0ff8e3f82a623ea007a1af41 (patch)
tree0dd469b25f45c5a40ee62916b40162985753972a /modules/svg
parent63591016b3ecd79ab1172cd98e2e830a09d6f515 (diff)
downloadgitea-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.go32
-rw-r--r--modules/svg/discover_nobindata.go31
-rw-r--r--modules/svg/svg.go13
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()
+}