Add builder

Signed-off-by: Adrien Kara <adrien@iglou.eu>
This commit is contained in:
Adrien Kara 2022-02-14 01:43:58 +01:00
parent 5d92360670
commit 31a8690a9c
Signed by: adrien
GPG Key ID: 605B69551C56DB62
3 changed files with 133 additions and 0 deletions

113
tools/builder.go Normal file
View File

@ -0,0 +1,113 @@
package main
import (
"bufio"
"bytes"
"os"
"text/template"
"github.com/tdewolff/minify/v2"
mcss "github.com/tdewolff/minify/v2/css"
mhtml "github.com/tdewolff/minify/v2/html"
)
const (
HtmlSrcFile = "../src/DiscoveryOne.html"
HtmlDstFile = "../public/DiscoveryOne.html"
CssSrcFile = "../src/css/Monolith.css"
CssDstFile = "../public/css/Monolith.css"
DATASrcFile = "../data/data.stf"
)
func main() {
html, err := os.ReadFile(HtmlSrcFile)
if err != nil {
panic(err)
}
css, err := os.ReadFile(CssSrcFile)
if err != nil {
panic(err)
}
data, err := parseData(DATASrcFile)
if err != nil {
panic(err)
}
if err = buildHTML(&html, &data); err != nil {
panic(err)
}
if err = minifyStuff(&html, &css); err != nil {
panic(err)
}
err = os.WriteFile(HtmlDstFile, html, 0644)
if err != nil {
panic(err)
}
err = os.WriteFile(CssDstFile, css, 0644)
if err != nil {
panic(err)
}
}
func parseData(file string) (data []string, err error) {
buff, err := os.Open(file)
if err != nil {
return
}
defer buff.Close()
scanner := bufio.NewScanner(buff)
scanner.Split(bufio.ScanLines)
data = append(data, "")
for scanner.Scan() {
data = append(data, scanner.Text())
}
return
}
func buildHTML(html *[]byte, data *[]string) (err error) {
tpl := template.Must(template.New("").Parse(string(*html)))
buff := new(bytes.Buffer)
if err = tpl.Execute(buff, *data); err != nil {
return
}
*html = buff.Bytes()
return
}
func minifyStuff(html *[]byte, css *[]byte) (err error) {
m := minify.New()
// m.AddFunc("text/css", mcss.Minify)
m.Add("text/css", &mcss.Minifier{})
// m.AddFunc("text/html", mhtml.Minify)
m.Add("text/html", &mhtml.Minifier{
KeepEndTags: true,
KeepDocumentTags: true,
})
*html, err = m.Bytes("text/html", *html)
if err != nil {
return
}
*css, err = m.Bytes("text/css", *css)
if err != nil {
return
}
return
}

7
tools/go.mod Normal file
View File

@ -0,0 +1,7 @@
module static.iglou.eu
go 1.17
require github.com/tdewolff/minify/v2 v2.10.0
require github.com/tdewolff/parse/v2 v2.5.27 // indirect

13
tools/go.sum Normal file
View File

@ -0,0 +1,13 @@
github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U=
github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/tdewolff/minify/v2 v2.10.0 h1:ovVAHUcjfGrBDf1EIvsodRUVJiZK/28mMose08B7k14=
github.com/tdewolff/minify/v2 v2.10.0/go.mod h1:6XAjcHM46pFcRE0eztigFPm0Q+Cxsw8YhEWT+rDkcZM=
github.com/tdewolff/parse/v2 v2.5.27 h1:PL3LzzXaOpmdrknnOlIeO2muIBHAwiKp6TxN1RbU5gI=
github.com/tdewolff/parse/v2 v2.5.27/go.mod h1:WzaJpRSbwq++EIQHYIRTpbYKNA3gn9it1Ik++q4zyho=
github.com/tdewolff/test v1.0.6 h1:76mzYJQ83Op284kMT+63iCNCI7NEERsIN8dLM+RiKr4=
github.com/tdewolff/test v1.0.6/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=