forked from Threadfin/Threadfin
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhtml-build.go
More file actions
146 lines (106 loc) · 2.7 KB
/
html-build.go
File metadata and controls
146 lines (106 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package src
import (
"bufio"
"encoding/base64"
"fmt"
"log"
"os"
"path/filepath"
"runtime"
)
var htmlFolder string
var goFile string
var mapName string
var packageName string
var blankMap = make(map[string]interface{})
// HTMLInit : Dateipfade festlegen
// mapName = Name der zu erstellenden map
// htmlFolder: Ordner der HTML Dateien
// packageName: Name des package
func HTMLInit(name, pkg, folder, file string) {
htmlFolder = folder
goFile = file
mapName = name
packageName = pkg
}
// BuildGoFile : Erstellt das GO Dokument
func BuildGoFile() error {
var err = checkHTMLFile(htmlFolder)
if err != nil {
return err
}
var content string
content += `package ` + packageName + "\n\n"
content += `var ` + mapName + ` = make(map[string]interface{})` + "\n\n"
content += "func loadHTMLMap() {" + "\n\n"
content += createMapFromFiles(htmlFolder) + "\n"
content += "}" + "\n\n"
writeStringToFile(goFile, content)
return nil
}
// GetHTMLString : base64 -> string
func GetHTMLString(base string) string {
content, _ := base64.StdEncoding.DecodeString(base)
return string(content)
}
func createMapFromFiles(folder string) string {
var path = getLocalPath(folder)
err := filepath.Walk(path, readFilesToMap)
if err != nil {
checkErr(err)
}
var content string
for key := range blankMap {
var newKey = key
content += ` ` + mapName + `["` + newKey + `"` + `] = "` + blankMap[key].(string) + `"` + "\n"
}
return content
}
func readFilesToMap(path string, info os.FileInfo, err error) error {
if info.IsDir() == false {
var base64Str = fileToBase64(getLocalPath(path))
blankMap[path] = base64Str
}
return nil
}
func fileToBase64(file string) string {
imgFile, _ := os.Open(file)
defer imgFile.Close()
// create a new buffer base on file size
fInfo, _ := imgFile.Stat()
var size = fInfo.Size()
buf := make([]byte, int64(size))
// read file content into buffer
fReader := bufio.NewReader(imgFile)
fReader.Read(buf)
imgBase64Str := base64.StdEncoding.EncodeToString(buf)
return imgBase64Str
}
func getLocalPath(filename string) string {
path, file := filepath.Split(filename)
var newPath = filepath.Dir(path)
var newFileName = newPath + "/" + file
return newFileName
}
func writeStringToFile(filename, content string) error {
err := os.WriteFile(getPlatformFile(filename), []byte(content), 0644)
if err != nil {
checkErr(err)
return err
}
return nil
}
func checkHTMLFile(filename string) error {
if _, err := os.Stat(getLocalPath(filename)); os.IsNotExist(err) {
fmt.Println(filename)
checkErr(err)
return err
}
return nil
}
func checkErr(err error) {
if err != nil {
_, file, line, _ := runtime.Caller(1)
log.Println("ERROR: [", err, "] in ", file, line)
}
}