service fix - source assets - fixes

pull/44/merge
Hunter Long 2018-08-09 22:38:54 -06:00
parent c27f6a6f30
commit 09f094312e
19 changed files with 108 additions and 78 deletions

View File

@ -18,12 +18,12 @@ services:
env:
global:
- VERSION=0.36
- DB_HOST=localhost
- DB_USER=travis
- DB_PASS=
- DB_DATABASE=test
- GO_ENV=test
- VERSION=0.36
- DB_HOST=localhost
- DB_USER=travis
- DB_PASS=
- DB_DATABASE=test
- GO_ENV=test
matrix:
allow_failures:

View File

@ -1,10 +1,10 @@
#!/usr/bin/env bash
cd $GOPATH/src/github.com/hunterlong/statup/core
cd $GOPATH/src/github.com/hunterlong/statup/source
# RENDERING CSS
gem install sass
sass ../source/scss/base.scss ../source/css/base.css
sass scss/base.scss css/base.css
# MIGRATION SQL FILE FOR CURRENT VERSION
#printf "UPDATE core SET version='$VERSION';\n" >> source/sql/upgrade.sql

View File

@ -4,6 +4,7 @@ import (
"encoding/json"
"fmt"
"github.com/hunterlong/statup/core"
"github.com/hunterlong/statup/source"
"github.com/hunterlong/statup/types"
"github.com/hunterlong/statup/utils"
"github.com/joho/godotenv"
@ -27,7 +28,7 @@ func CatchCLI(args []string) {
case "version":
fmt.Printf("Statup v%v\n", VERSION)
case "assets":
core.RenderBoxes()
source.Assets()
core.CreateAllAssets(dir)
case "sass":
core.CompileSASS(dir)
@ -52,7 +53,7 @@ func CatchCLI(args []string) {
case "export":
var err error
fmt.Printf("Statup v%v Exporting Static 'index.html' page...\n", VERSION)
core.RenderBoxes()
source.Assets()
core.Configs, err = core.LoadConfig()
if err != nil {
utils.Log(4, "config.yml file not found")
@ -126,7 +127,7 @@ func HelpEcho() {
func TestPlugin(plug types.PluginActions) {
defer utils.DeleteFile("./.plugin_test.db")
core.RenderBoxes()
source.Assets()
info := plug.GetInfo()
fmt.Printf("\n" + BRAKER + "\n")
@ -191,7 +192,7 @@ func FakeSeed(plug types.PluginActions) {
if err != nil {
utils.Log(3, err)
}
up, _ := core.SqlBox.String("sqlite_up.sql")
up, _ := source.SqlBox.String("sqlite_up.sql")
requests := strings.Split(up, ";")
for _, request := range requests {
_, err := core.DbSession.Exec(request)

View File

@ -5,6 +5,7 @@ import (
"github.com/fatih/structs"
"github.com/hunterlong/statup/core"
"github.com/hunterlong/statup/handlers"
"github.com/hunterlong/statup/source"
"github.com/hunterlong/statup/types"
"github.com/hunterlong/statup/utils"
"github.com/joho/godotenv"
@ -33,7 +34,7 @@ func main() {
os.Exit(0)
}
utils.Log(1, fmt.Sprintf("Starting Statup v%v", VERSION))
core.RenderBoxes()
source.Assets()
core.HasAssets(directory)
core.Configs, err = core.LoadConfig()

View File

@ -6,6 +6,7 @@ import (
"github.com/hunterlong/statup/core"
"github.com/hunterlong/statup/handlers"
"github.com/hunterlong/statup/notifiers"
"github.com/hunterlong/statup/source"
"github.com/hunterlong/statup/types"
"github.com/hunterlong/statup/utils"
"github.com/rendon/testcli"
@ -29,7 +30,7 @@ func init() {
}
func RunInit(t *testing.T) {
core.RenderBoxes()
source.Assets()
os.Remove(dir + "/statup.db")
os.Remove(dir + "/cmd/config.yml")
os.Remove(dir + "/cmd/index.html")
@ -39,9 +40,9 @@ func RunInit(t *testing.T) {
}
func TestRunAll(t *testing.T) {
t.Parallel()
//t.Parallel()
databases := []string{"mysql", "sqlite", "postgres"}
databases := []string{"sqlite", "postgres", "mysql"}
for _, dbt := range databases {
@ -192,10 +193,10 @@ func TestAssetsCommand(t *testing.T) {
c := testcli.Command("statup", "assets")
c.Run()
t.Log(c.Stdout())
assert.True(t, fileExists(dir+"/assets/robots.txt"))
assert.True(t, fileExists(dir+"/assets/js/main.js"))
assert.True(t, fileExists(dir+"/assets/css/base.css"))
assert.True(t, fileExists(dir+"/assets/scss/base.scss"))
t.Log("Directory for Assets: ", dir)
assert.True(t, fileExists("../assets/robots.txt"))
assert.True(t, fileExists("../assets/js/main.js"))
assert.True(t, fileExists("../assets/scss/base.scss"))
}
func RunMakeDatabaseConfig(t *testing.T, db string) {

View File

@ -3,20 +3,13 @@ package core
import (
"fmt"
"github.com/GeertJohan/go.rice"
"github.com/hunterlong/statup/source"
"github.com/hunterlong/statup/utils"
"io/ioutil"
"os"
"os/exec"
)
func RenderBoxes() {
SqlBox = rice.MustFindBox("../source/sql")
CssBox = rice.MustFindBox("../source/css")
ScssBox = rice.MustFindBox("../source/scss")
JsBox = rice.MustFindBox("../source/js")
TmplBox = rice.MustFindBox("../source/tmpl")
}
func CopyToPublic(box *rice.Box, folder, file string) {
assetFolder := fmt.Sprintf("%v/%v", folder, file)
utils.Log(1, fmt.Sprintf("Copying %v to %v", file, assetFolder))
@ -72,7 +65,7 @@ func HasAssets(folder string) bool {
CreateAllAssets(folder)
err := CompileSASS(folder)
if err != nil {
CopyToPublic(CssBox, folder+"/css", "base.css")
CopyToPublic(source.CssBox, folder+"/css", "base.css")
utils.Log(2, "Default 'base.css' was insert because SASS did not work.")
return true
}
@ -107,17 +100,17 @@ func CreateAllAssets(folder string) error {
MakePublicFolder(folder + "/assets/css")
MakePublicFolder(folder + "/assets/scss")
utils.Log(1, "Inserting scss, css, and javascript files into assets folder")
CopyToPublic(ScssBox, folder+"/assets/scss", "base.scss")
CopyToPublic(ScssBox, folder+"/assets/scss", "variables.scss")
CopyToPublic(CssBox, folder+"/assets/css", "bootstrap.min.css")
CopyToPublic(CssBox, folder+"/assets/css", "base.css")
CopyToPublic(JsBox, folder+"/assets/js", "bootstrap.min.js")
CopyToPublic(JsBox, folder+"/assets/js", "Chart.bundle.min.js")
CopyToPublic(JsBox, folder+"/assets/js", "jquery-3.3.1.slim.min.js")
CopyToPublic(JsBox, folder+"/assets/js", "main.js")
CopyToPublic(JsBox, folder+"/assets/js", "setup.js")
CopyToPublic(TmplBox, folder+"/assets", "robots.txt")
CopyToPublic(TmplBox, folder+"/assets", "favicon.ico")
CopyToPublic(source.ScssBox, folder+"/assets/scss", "base.scss")
CopyToPublic(source.ScssBox, folder+"/assets/scss", "variables.scss")
CopyToPublic(source.CssBox, folder+"/assets/css", "bootstrap.min.css")
CopyToPublic(source.CssBox, folder+"/assets/css", "base.css")
CopyToPublic(source.JsBox, folder+"/assets/js", "bootstrap.min.js")
CopyToPublic(source.JsBox, folder+"/assets/js", "Chart.bundle.min.js")
CopyToPublic(source.JsBox, folder+"/assets/js", "jquery-3.3.1.slim.min.js")
CopyToPublic(source.JsBox, folder+"/assets/js", "main.js")
CopyToPublic(source.JsBox, folder+"/assets/js", "setup.js")
CopyToPublic(source.TmplBox, folder+"/assets", "robots.txt")
CopyToPublic(source.TmplBox, folder+"/assets", "statup.png")
utils.Log(1, "Compiling CSS from SCSS style...")
err := utils.Log(1, "Statup assets have been inserted")
return err

View File

@ -1,7 +1,6 @@
package core
import (
"github.com/GeertJohan/go.rice"
"github.com/hunterlong/statup/notifiers"
"github.com/hunterlong/statup/types"
"github.com/pkg/errors"
@ -20,11 +19,6 @@ type Core struct {
var (
Configs *types.Config
CoreApp *Core
SqlBox *rice.Box
CssBox *rice.Box
ScssBox *rice.Box
JsBox *rice.Box
TmplBox *rice.Box
SetupMode bool
UsingAssets bool
VERSION string

View File

@ -1,6 +1,7 @@
package core
import (
"github.com/hunterlong/statup/source"
"github.com/hunterlong/statup/utils"
"github.com/stretchr/testify/assert"
"os"
@ -10,15 +11,13 @@ import (
var (
testCore *Core
testConfig *DbConfig
gopath string
dir string
)
func init() {
gopath = os.Getenv("GOPATH")
gopath += "/src/github.com/hunterlong/statup"
dir = utils.Directory
utils.InitLogs()
RenderBoxes()
source.Assets()
}
func TestNewCore(t *testing.T) {
@ -31,14 +30,14 @@ func TestDbConfig_Save(t *testing.T) {
testConfig = &DbConfig{
DbConn: "sqlite",
Project: "Tester",
Location: gopath,
Location: dir,
}
err := testConfig.Save()
assert.Nil(t, err)
}
func TestDbConnection(t *testing.T) {
err := DbConnection(testConfig.DbConn, false, gopath)
err := DbConnection(testConfig.DbConn, false, dir)
assert.Nil(t, err)
}
@ -74,25 +73,25 @@ func TestCore_UsingAssets(t *testing.T) {
}
func TestHasAssets(t *testing.T) {
assert.False(t, HasAssets(gopath))
assert.False(t, HasAssets(dir))
}
func TestCreateAssets(t *testing.T) {
assert.Nil(t, CreateAllAssets(gopath))
assert.True(t, HasAssets(gopath))
assert.Nil(t, CreateAllAssets(dir))
assert.True(t, HasAssets(dir))
}
func TestCompileSASS(t *testing.T) {
t.SkipNow()
os.Setenv("SASS", "sass")
os.Setenv("CMD_FILE", gopath+"/cmd.sh")
assert.Nil(t, CompileSASS(gopath))
assert.True(t, HasAssets(gopath))
os.Setenv("CMD_FILE", dir+"/cmd.sh")
assert.Nil(t, CompileSASS(dir))
assert.True(t, HasAssets(dir))
}
func TestDeleteAssets(t *testing.T) {
assert.Nil(t, DeleteAllAssets(gopath))
assert.False(t, HasAssets(gopath))
assert.Nil(t, DeleteAllAssets(dir))
assert.False(t, HasAssets(dir))
}
func TestInsertNotifierDB(t *testing.T) {

View File

@ -3,6 +3,7 @@ package core
import (
"fmt"
"github.com/go-yaml/yaml"
"github.com/hunterlong/statup/source"
"github.com/hunterlong/statup/types"
"github.com/hunterlong/statup/utils"
"os"
@ -179,7 +180,7 @@ func RunDatabaseUpgrades() error {
return err
}
utils.Log(1, fmt.Sprintf("Checking for Database Upgrades since #%v", currentMigration))
upgrade, _ := SqlBox.String(CoreApp.DbConnection + "_upgrade.sql")
upgrade, _ := source.SqlBox.String(CoreApp.DbConnection + "_upgrade.sql")
// parse db version and upgrade file
ups := strings.Split(upgrade, "=========================================== ")
ups = reverseSlice(ups)
@ -226,7 +227,7 @@ func RunDatabaseUpgrades() error {
func DropDatabase() error {
utils.Log(1, "Dropping Database Tables...")
down, err := SqlBox.String("down.sql")
down, err := source.SqlBox.String("down.sql")
if err != nil {
return err
}
@ -248,7 +249,7 @@ func CreateDatabase() error {
} else if CoreApp.DbConnection == "sqlite" {
sql = "sqlite_up.sql"
}
up, err := SqlBox.String(sql)
up, err := source.SqlBox.String(sql)
requests := strings.Split(up, ";")
for _, request := range requests {
_, err := DbSession.Exec(request)

View File

@ -2,6 +2,7 @@ package core
import (
"bytes"
"github.com/hunterlong/statup/source"
"github.com/hunterlong/statup/utils"
"html/template"
"io/ioutil"
@ -10,9 +11,9 @@ import (
func ExportIndexHTML() string {
CoreApp.UseCdn = true
//out := index{*CoreApp, CoreApp.Services}
nav, _ := TmplBox.String("nav.html")
footer, _ := TmplBox.String("footer.html")
render, err := TmplBox.String("index.html")
nav, _ := source.TmplBox.String("nav.html")
footer, _ := source.TmplBox.String("footer.html")
render, err := source.TmplBox.String("index.html")
if err != nil {
utils.Log(3, err)
}

View File

@ -4,6 +4,7 @@ import (
"fmt"
"github.com/gorilla/sessions"
"github.com/hunterlong/statup/core"
"github.com/hunterlong/statup/source"
"github.com/hunterlong/statup/types"
"github.com/hunterlong/statup/utils"
"html/template"
@ -66,9 +67,9 @@ func IsAuthenticated(r *http.Request) bool {
func ExecuteResponse(w http.ResponseWriter, r *http.Request, file string, data interface{}) {
utils.Http(r)
nav, _ := core.TmplBox.String("nav.html")
footer, _ := core.TmplBox.String("footer.html")
render, err := core.TmplBox.String(file)
nav, _ := source.TmplBox.String("nav.html")
footer, _ := source.TmplBox.String("footer.html")
render, err := source.TmplBox.String(file)
if err != nil {
utils.Log(4, err)
}
@ -100,7 +101,7 @@ func ExecuteResponse(w http.ResponseWriter, r *http.Request, file string, data i
}
func ExecuteJSResponse(w http.ResponseWriter, r *http.Request, file string, data interface{}) {
render, err := core.JsBox.String(file)
render, err := source.JsBox.String(file)
if err != nil {
utils.Log(4, err)
}

View File

@ -2,6 +2,7 @@ package handlers
import (
"github.com/hunterlong/statup/core"
"github.com/hunterlong/statup/source"
"github.com/hunterlong/statup/utils"
"github.com/stretchr/testify/assert"
"net/http"
@ -13,7 +14,7 @@ import (
func init() {
utils.InitLogs()
core.RenderBoxes()
source.Assets()
}
func TestIndexHandler(t *testing.T) {
@ -84,6 +85,14 @@ func TestServicesViewHandler(t *testing.T) {
assert.Contains(t, body, "Statup made with ❤️")
}
func TestMissingServiceViewHandler(t *testing.T) {
req, err := http.NewRequest("GET", "/service/99999999", nil)
assert.Nil(t, err)
rr := httptest.NewRecorder()
Router().ServeHTTP(rr, req)
assert.Equal(t, 404, rr.Code)
}
func TestServiceChartHandler(t *testing.T) {
req, err := http.NewRequest("GET", "/charts.js", nil)
assert.Nil(t, err)

View File

@ -5,6 +5,7 @@ import (
"github.com/gorilla/mux"
"github.com/gorilla/sessions"
"github.com/hunterlong/statup/core"
"github.com/hunterlong/statup/source"
"net/http"
"time"
)
@ -76,11 +77,13 @@ func LocalizedAssets(r *mux.Router) *mux.Router {
r.PathPrefix("/js/").Handler(http.StripPrefix("/js/", jsHandler))
r.PathPrefix("/robots.txt").Handler(indexHandler)
r.PathPrefix("/favicon.ico").Handler(indexHandler)
r.PathPrefix("/statup.png").Handler(indexHandler)
} else {
r.PathPrefix("/css/").Handler(http.StripPrefix("/css/", http.FileServer(core.CssBox.HTTPBox())))
r.PathPrefix("/js/").Handler(http.StripPrefix("/js/", http.FileServer(core.JsBox.HTTPBox())))
r.PathPrefix("/robots.txt").Handler(http.FileServer(core.TmplBox.HTTPBox()))
r.PathPrefix("/favicon.ico").Handler(http.FileServer(core.TmplBox.HTTPBox()))
r.PathPrefix("/css/").Handler(http.StripPrefix("/css/", http.FileServer(source.CssBox.HTTPBox())))
r.PathPrefix("/js/").Handler(http.StripPrefix("/js/", http.FileServer(source.JsBox.HTTPBox())))
r.PathPrefix("/robots.txt").Handler(http.FileServer(source.TmplBox.HTTPBox()))
r.PathPrefix("/favicon.ico").Handler(http.FileServer(source.TmplBox.HTTPBox()))
r.PathPrefix("/statup.png").Handler(http.FileServer(source.TmplBox.HTTPBox()))
}
return r
}

View File

@ -80,6 +80,10 @@ func ServicesDeleteHandler(w http.ResponseWriter, r *http.Request) {
func ServicesViewHandler(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
serv := core.SelectService(utils.StringInt(vars["id"]))
if serv == nil {
w.WriteHeader(http.StatusNotFound)
return
}
ExecuteResponse(w, r, "service.html", serv)
}

View File

@ -5,6 +5,7 @@ import (
"github.com/gorilla/mux"
"github.com/hunterlong/statup/core"
"github.com/hunterlong/statup/notifiers"
"github.com/hunterlong/statup/source"
"github.com/hunterlong/statup/utils"
"net/http"
)
@ -72,7 +73,7 @@ func SaveAssetsHandler(w http.ResponseWriter, r *http.Request) {
core.CreateAllAssets(dir)
err := core.CompileSASS(dir)
if err != nil {
core.CopyToPublic(core.CssBox, dir+"/assets/css", "base.css")
core.CopyToPublic(source.CssBox, dir+"/assets/css", "base.css")
utils.Log(2, "Default 'base.css' was insert because SASS did not work.")
}
core.UsingAssets = true

19
source/source.go Normal file
View File

@ -0,0 +1,19 @@
package source
import "github.com/GeertJohan/go.rice"
var (
SqlBox *rice.Box
CssBox *rice.Box
ScssBox *rice.Box
JsBox *rice.Box
TmplBox *rice.Box
)
func Assets() {
SqlBox = rice.MustFindBox("sql")
CssBox = rice.MustFindBox("css")
ScssBox = rice.MustFindBox("scss")
JsBox = rice.MustFindBox("js")
TmplBox = rice.MustFindBox("tmpl")
}

View File

@ -19,7 +19,7 @@
<div class="col-8 offset-2 mt-3">
<div class="col-8 offset-2"><img src="https://assets.statup.io/statup-words.svg"></div>
<div class="col-6 offset-3 mb-4"><img width="100%" src="/statup.png"></div>
{{ if .Error }}
<div class="alert alert-danger" role="alert">

View File

@ -18,6 +18,8 @@
<div class="container col-md-7 col-sm-12 mt-md-5 bg-light">
<div class="col-4 offset-4 mt-2 mb-5"><img width="100%" src="/statup.png"></div>
<div class="col-12">
{{ if .Error }}

BIN
source/tmpl/statup.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB