CDN asset changes, SCSS entry file change

pull/773/head
hunterlong 2020-08-03 02:10:22 -07:00
parent 8e603ceda0
commit ae25e84128
6 changed files with 68 additions and 42 deletions

View File

@ -135,7 +135,7 @@ func sassCli() error {
if err := source.Assets(); err != nil {
return err
}
if err := source.CompileSASS(source.DefaultScss...); err != nil {
if err := source.CompileSASS(); err != nil {
return err
}
return nil

View File

@ -43,8 +43,8 @@
<meta property="twitter:image" content="favicon/social.png">
{{if USE_CDN}}
<link rel="stylesheet" href="https://assets.statping.com/style.css">
<link rel="stylesheet" href="https://assets.statping.com/main.css">
<link rel="stylesheet" href="https://assets.statping.com/css/style.css">
<link rel="stylesheet" href="https://assets.statping.com/css/main.css">
{{else if USING_ASSETS }}
<link href="css/style.css" rel="stylesheet">
<link href="css/main.css" rel="stylesheet">
@ -52,7 +52,6 @@
<% _.each(htmlWebpackPlugin.tags.headTags, function(headTag) { %>
<%= headTag %> <% }) %>
{{end}}
{{end}}
</head>
<body>
<noscript>
@ -62,10 +61,10 @@
<div id="app" class="statping_container"></div>
{{if USE_CDN}}
<script src="https://assets.statping.com/bundle.js"></script>
<script src="https://assets.statping.com/polyfill.chunk.js"></script>
<script src="https://assets.statping.com/style.chunk.js"></script>
<script src="https://assets.statping.com/main.chunk.js"></script>
<script src="https://assets.statping.com/js/bundle.js"></script>
<script src="https://assets.statping.com/js/polyfill.chunk.js"></script>
<script src="https://assets.statping.com/js/style.chunk.js"></script>
<script src="https://assets.statping.com/js/main.chunk.js"></script>
{{else if USING_ASSETS }}
<script src="js/bundle.js"></script>
<script src="js/polyfill.chunk.js"></script>

View File

@ -96,7 +96,7 @@ func apiThemeSaveHandler(w http.ResponseWriter, r *http.Request) {
sendErrorJson(err, w, r)
return
}
if err := source.CompileSASS(source.DefaultScss...); err != nil {
if err := source.CompileSASS(); err != nil {
sendErrorJson(err, w, r)
return
}
@ -118,7 +118,7 @@ func apiThemeCreateHandler(w http.ResponseWriter, r *http.Request) {
sendErrorJson(err, w, r)
return
}
if err := source.CompileSASS(source.DefaultScss...); err != nil {
if err := source.CompileSASS(); err != nil {
source.CopyToPublic(source.TmplBox, "css", "main.css")
source.CopyToPublic(source.TmplBox, "css", "base.css")
log.Errorln("Default 'base.css' was inserted because SASS did not work.")

View File

@ -71,8 +71,8 @@ func Router() *mux.Router {
r.PathPrefix("/css/").Handler(http.StripPrefix(basePath, Gzip(staticAssets("css"))))
r.PathPrefix("/js/").Handler(http.StripPrefix(basePath, Gzip(staticAssets("js"))))
r.PathPrefix("/scss/").Handler(http.StripPrefix(basePath, Gzip(staticAssets("scss"))))
r.PathPrefix("/favicon/").Handler(http.StripPrefix(basePath, Gzip(staticAssets("favicon"))))
r.PathPrefix("/scss/").Handler(http.StripPrefix(basePath, staticAssets("scss")))
r.PathPrefix("/favicon/").Handler(http.StripPrefix(basePath, staticAssets("favicon")))
r.PathPrefix("/robots.txt").Handler(http.StripPrefix(basePath, indexHandler))
r.PathPrefix("/banner.png").Handler(http.StripPrefix(basePath, indexHandler))
} else {
@ -80,9 +80,9 @@ func Router() *mux.Router {
tmplBoxHandler := http.StripPrefix(basePath, tmplFileSrv)
r.PathPrefix("/css/").Handler(http.StripPrefix(basePath, Gzip(tmplFileSrv)))
r.PathPrefix("/scss/").Handler(http.StripPrefix(basePath, Gzip(tmplFileSrv)))
r.PathPrefix("/scss/").Handler(http.StripPrefix(basePath, tmplFileSrv))
r.PathPrefix("/js/").Handler(http.StripPrefix(basePath, Gzip(tmplFileSrv)))
r.PathPrefix("/favicon/").Handler(http.StripPrefix(basePath, Gzip(tmplFileSrv)))
r.PathPrefix("/favicon/").Handler(http.StripPrefix(basePath, tmplFileSrv))
r.PathPrefix("/robots.txt").Handler(tmplBoxHandler)
r.PathPrefix("/banner.png").Handler(tmplBoxHandler)
}

View File

@ -14,9 +14,8 @@ import (
)
var (
log = utils.Log.WithField("type", "source")
TmplBox *rice.Box // HTML and other small files from the 'source/tmpl' directory, this will be loaded into '/assets'
DefaultScss = []string{"scss/base.scss", "scss/layout.scss", "scss/forms.scss", "scss/mixin.scss", "scss/mobile.scss", "scss/variables.scss"}
log = utils.Log.WithField("type", "source")
TmplBox *rice.Box // HTML and other small files from the 'source/tmpl' directory, this will be loaded into '/assets'
)
// Assets will load the Rice boxes containing the CSS, SCSS, JS, and HTML files.
@ -38,7 +37,7 @@ func scssRendered(name string) string {
}
// CompileSASS will attempt to compile the SASS files into CSS
func CompileSASS(files ...string) error {
func CompileSASS() error {
sassBin := utils.Params.GetString("SASS")
if sassBin == "" {
bin, err := exec.LookPath("sass")
@ -77,8 +76,7 @@ func UsingAssets(folder string) bool {
if err := CreateAllAssets(folder); err != nil {
log.Warnln(err)
}
err := CompileSASS(DefaultScss...)
if err != nil {
if err := CompileSASS(); err != nil {
//CopyToPublic(CssBox, folder+"/css", "base.css")
log.Warnln("Default 'base.css' was insert because SASS did not work.")
return true
@ -148,9 +146,11 @@ func CreateAllAssets(folder string) error {
return err
}
log.Infoln("Compiling CSS from SCSS style...")
err := CompileSASS(DefaultScss...)
if err := CompileSASS(); err != nil {
return err
}
log.Infoln("Statping assets have been inserted")
return err
return nil
}
// DeleteAllAssets will delete the '/assets' folder

View File

@ -8,7 +8,26 @@ import (
)
var (
dir string
dir string
requiredFiles = []string{
"css/style.css",
"css/style.css.gz",
"css/main.css",
"scss/main.scss",
"scss/base.scss",
"scss/forms.scss",
"scss/layout.scss",
"scss/mixin.scss",
"scss/mobile.scss",
"scss/variables.scss",
"js/bundle.js",
"js/main.chunk.js",
"js/polyfill.chunk.js",
"js/style.chunk.js",
"banner.png",
"favicon.ico",
"robots.txt",
}
)
func init() {
@ -19,59 +38,67 @@ func init() {
dir = utils.Params.GetString("STATPING_DIR")
}
func assetFiles(t *testing.T, exist bool) {
for _, f := range requiredFiles {
if exist {
assert.FileExists(t, dir+"/assets/"+f)
} else {
assert.NoFileExists(t, dir+"/assets/"+f)
}
}
}
func TestCore_UsingAssets(t *testing.T) {
assert.False(t, UsingAssets(dir))
assetFiles(t, false)
}
func TestCreateAssets(t *testing.T) {
assert.Nil(t, CreateAllAssets(dir))
assert.FileExists(t, dir+"/assets/js/bundle.js")
assert.True(t, UsingAssets(dir))
assert.Nil(t, CompileSASS(DefaultScss...))
assert.FileExists(t, dir+"/assets/css/style.css")
assert.FileExists(t, dir+"/assets/css/main.css")
assert.FileExists(t, dir+"/assets/scss/main.scss")
assert.FileExists(t, dir+"/assets/scss/base.scss")
assert.FileExists(t, dir+"/assets/scss/forms.scss")
assert.FileExists(t, dir+"/assets/scss/mobile.scss")
assert.FileExists(t, dir+"/assets/scss/layout.scss")
assert.FileExists(t, dir+"/assets/scss/variables.scss")
assert.Nil(t, CompileSASS())
assetFiles(t, true)
}
func TestCopyAllToPublic(t *testing.T) {
err := CopyAllToPublic(TmplBox)
require.Nil(t, err)
assetFiles(t, true)
}
func TestCompileSASS(t *testing.T) {
CompileSASS(DefaultScss...)
err := CompileSASS()
require.Nil(t, err)
assert.True(t, UsingAssets(dir))
assetFiles(t, true)
}
func TestSaveAndCompileAsset(t *testing.T) {
scssData := "$bodycolor: #333; BODY { color: $bodycolor; }"
err := SaveAsset([]byte(scssData), "scss/theme.scss")
err := SaveAsset([]byte(scssData), "scss/base.scss")
require.Nil(t, err)
assert.FileExists(t, dir+"/assets/scss/theme.scss")
assert.FileExists(t, dir+"/assets/scss/base.scss")
asset := OpenAsset("scss/theme.scss")
asset := OpenAsset("scss/base.scss")
assert.NotEmpty(t, asset)
assert.Equal(t, scssData, asset)
err = CompileSASS("scss/theme.scss")
err = CompileSASS()
require.Nil(t, err)
assert.FileExists(t, dir+"/assets/css/theme.css")
assert.FileExists(t, dir+"/assets/css/main.css")
themeCSS, err := utils.OpenFile(dir + "/assets/css/theme.css")
themeCSS, err := utils.OpenFile(dir + "/assets/css/main.css")
require.Nil(t, err)
assert.Contains(t, themeCSS, `color: #333;`)
}
func TestOpenAsset(t *testing.T) {
asset := OpenAsset("scss/theme.scss")
assert.NotEmpty(t, asset)
for _, f := range requiredFiles {
asset := OpenAsset(f)
assert.NotEmpty(t, asset)
}
}
func TestDeleteAssets(t *testing.T) {