statping/assets.go

93 lines
2.3 KiB
Go
Raw Normal View History

2018-06-28 07:28:07 +00:00
package main
import (
"fmt"
"github.com/GeertJohan/go.rice"
2018-06-29 02:24:31 +00:00
"github.com/hunterlong/statup/log"
2018-06-28 07:28:07 +00:00
"io/ioutil"
"os"
"os/exec"
)
var (
useAssets bool
)
func CopyToPublic(box *rice.Box, folder, file string) {
base, err := box.String(file)
if err != nil {
2018-06-29 02:24:31 +00:00
log.Send(2, err)
2018-06-28 07:28:07 +00:00
}
ioutil.WriteFile("assets/"+folder+"/"+file, []byte(base), 0644)
}
func MakePublicFolder(folder string) {
if _, err := os.Stat(folder); os.IsNotExist(err) {
err = os.MkdirAll(folder, 0755)
if err != nil {
2018-06-29 02:24:31 +00:00
log.Send(2, err)
2018-06-28 07:28:07 +00:00
}
}
}
func CompileSASS() {
2018-06-28 23:28:55 +00:00
cmdBin := os.Getenv("SASS")
shell := os.Getenv("BASH_ENV")
2018-06-29 02:24:31 +00:00
log.Send(1, fmt.Sprintf("Compiling SASS into /css/base.css..."))
2018-06-28 23:28:55 +00:00
command := fmt.Sprintf("%v %v %v", cmdBin, "assets/scss/base.scss", "assets/css/base.css")
testCmd := exec.Command(shell, command)
2018-06-28 07:28:07 +00:00
_, err := testCmd.Output()
if err != nil {
fmt.Println(err)
}
2018-06-29 02:24:31 +00:00
log.Send(1, "SASS Compiling is complete!")
2018-06-28 07:28:07 +00:00
}
func hasAssets() bool {
if _, err := os.Stat("assets"); err == nil {
useAssets = true
return true
} else {
assetEnv := os.Getenv("USE_ASSETS")
if assetEnv == "true" {
CreateAllAssets()
useAssets = true
return true
}
}
return false
}
func SaveAsset(data, file string) {
ioutil.WriteFile("assets/"+file, []byte(data), 0644)
}
func OpenAsset(file string) string {
2018-06-29 02:24:31 +00:00
dat, err := ioutil.ReadFile("assets/" + file)
log.Send(2, err)
2018-06-28 07:28:07 +00:00
return string(dat)
}
func CreateAllAssets() {
2018-06-29 02:24:31 +00:00
log.Send(1, "Creating folder 'assets' in current directory..")
2018-06-28 07:28:07 +00:00
MakePublicFolder("assets")
MakePublicFolder("assets/js")
MakePublicFolder("assets/css")
MakePublicFolder("assets/scss")
MakePublicFolder("assets/emails")
2018-06-29 02:24:31 +00:00
log.Send(1, "Inserting scss, css, emails, and javascript files into assets..")
2018-06-28 07:28:07 +00:00
CopyToPublic(scssBox, "scss", "base.scss")
CopyToPublic(scssBox, "scss", "variables.scss")
CopyToPublic(emailBox, "emails", "error.html")
CopyToPublic(emailBox, "emails", "failure.html")
CopyToPublic(cssBox, "css", "bootstrap.min.css")
CopyToPublic(jsBox, "js", "bootstrap.min.js")
CopyToPublic(jsBox, "js", "Chart.bundle.min.js")
CopyToPublic(jsBox, "js", "jquery-3.3.1.slim.min.js")
CopyToPublic(jsBox, "js", "main.js")
CopyToPublic(jsBox, "js", "setup.js")
2018-06-29 02:24:31 +00:00
log.Send(1, "Compiling CSS from SCSS style...")
2018-06-28 07:28:07 +00:00
CompileSASS()
2018-06-29 02:24:31 +00:00
log.Send(1, "Statup assets have been inserted")
2018-06-28 07:28:07 +00:00
}