Dev mode does not need make assets any more

- Only when using the buildflag `-tags dev` local file
- files are loaded directly from the file system instead of the compiled binary
- had to move `//go:generate esc …` from `server/http.go`to `main.go` as otherwise the stored local paths of the files wouldn’t be correct
- Moved the `liveAssets` constants definition into two separate files, where one is included when building for dev, and one when it isn’t
- move the tempate parsing into the handler in `http.go` as otherwise template changes would not be considered
This commit is contained in:
Andreas Linde 2020-07-28 15:43:34 +02:00
parent caffcfda59
commit edd833db82
No known key found for this signature in database
GPG key ID: 96178502495847D9
5 changed files with 78 additions and 68 deletions

View file

@ -1,5 +1,7 @@
package main
//go:generate esc -o server/assets.go -pkg server -modtime 1566640112 -ignore .DS_Store -prefix assets assets
import (
"github.com/andig/evcc/cmd"
)

View file

@ -1,4 +1,4 @@
// Code generated by "esc -o assets.go -pkg server -modtime 1566640112 -ignore .DS_Store -prefix ../assets ../assets"; DO NOT EDIT.
// Code generated by "esc -o server/assets.go -pkg server -modtime 1566640112 -ignore .DS_Store -prefix assets assets"; DO NOT EDIT.
package server
@ -211,7 +211,7 @@ var _escData = map[string]*_escFile{
"/css/bootstrap.min.css": {
name: "bootstrap.min.css",
local: "../assets/css/bootstrap.min.css",
local: "assets/css/bootstrap.min.css",
size: 160403,
modtime: 1566640112,
compressed: `
@ -616,7 +616,7 @@ XUuESbGjuG8sFJ0BzmKEArTSEQkzHRshYs2swTL8kfzrSOWx/HhWHlEk8MF7Qnng3Z4TKN5A5uEJbPj6
"/css/bootstrap.min.css.map": {
name: "bootstrap.min.css.map",
local: "../assets/css/bootstrap.min.css.map",
local: "assets/css/bootstrap.min.css.map",
size: 585606,
modtime: 1566640112,
compressed: `
@ -2137,7 +2137,7 @@ tKbm1k1dWG7KPAL/Csee1ISMJdrjyPYdE+47J92RxHvoDj2ORqdKshEjz1dNtj/HcgJ8DcoPbyJOeHDd
"/css/fontawesome.min.css": {
name: "fontawesome.min.css",
local: "../assets/css/fontawesome.min.css",
local: "assets/css/fontawesome.min.css",
size: 57180,
modtime: 1566640112,
compressed: `
@ -2350,7 +2350,7 @@ W9pv/cU/0Hrrj3697X6c22/+x/16SxHvvr1roF/+TwAAAP//CzpZH1zfAAA=
"/css/solid.min.css": {
name: "solid.min.css",
local: "../assets/css/solid.min.css",
local: "assets/css/solid.min.css",
size: 668,
modtime: 1566640112,
compressed: `
@ -2365,7 +2365,7 @@ ktN3AAAA//+or4ZMnAIAAA==
"/ico/android-chrome-192x192.png": {
name: "android-chrome-192x192.png",
local: "../assets/ico/android-chrome-192x192.png",
local: "assets/ico/android-chrome-192x192.png",
size: 11704,
modtime: 1566640112,
compressed: `
@ -2569,7 +2569,7 @@ kc9X/AQcf8DxuJLkSQUAAFCQUZWukjQJ/n8BAAD//xPSKhm4LQAA
"/ico/android-chrome-512x512.png": {
name: "android-chrome-512x512.png",
local: "../assets/ico/android-chrome-512x512.png",
local: "assets/ico/android-chrome-512x512.png",
size: 37829,
modtime: 1566640112,
compressed: `
@ -3197,7 +3197,7 @@ WSSYpgAAANgdc7TOJ3jH/FcAAAD//w9bhdjFkwAA
"/ico/apple-touch-icon.png": {
name: "apple-touch-icon.png",
local: "../assets/ico/apple-touch-icon.png",
local: "assets/ico/apple-touch-icon.png",
size: 4851,
modtime: 1566640112,
compressed: `
@ -3285,7 +3285,7 @@ Mr+c8xIAAA==
"/ico/browserconfig.xml": {
name: "browserconfig.xml",
local: "../assets/ico/browserconfig.xml",
local: "assets/ico/browserconfig.xml",
size: 249,
modtime: 1566640112,
compressed: `
@ -3297,7 +3297,7 @@ K6qiFGC8pgd624ptnfKL6LtMjYHebIImP6HtMgAANfOwLA71sCL5nx2+ojOxPIif2xBMVZd7VZeOLAEH
"/ico/favicon-16x16.png": {
name: "favicon-16x16.png",
local: "../assets/ico/favicon-16x16.png",
local: "assets/ico/favicon-16x16.png",
size: 1038,
modtime: 1566640112,
compressed: `
@ -3321,7 +3321,7 @@ F56ufi7rnBKaAAEAAP//GVilsg4EAAA=
"/ico/favicon-32x32.png": {
name: "favicon-32x32.png",
local: "../assets/ico/favicon-32x32.png",
local: "assets/ico/favicon-32x32.png",
size: 1427,
modtime: 1566640112,
compressed: `
@ -3355,7 +3355,7 @@ YIIBAAD//woaWteTBQAA
"/ico/favicon.ico": {
name: "favicon.ico",
local: "../assets/ico/favicon.ico",
local: "assets/ico/favicon.ico",
size: 15086,
modtime: 1566640112,
compressed: `
@ -3410,7 +3410,7 @@ AAD//8NV/E3uOgAA
"/ico/favicon.svg": {
name: "favicon.svg",
local: "../assets/ico/favicon.svg",
local: "assets/ico/favicon.svg",
size: 3795,
modtime: 1566640112,
compressed: `
@ -3451,7 +3451,7 @@ Xe4jN7v9/uqHlOrnm5vLveN3r1/dVdw4Xu6RV69Xl+8Ef+Iu45/Oa/8/4eOH/wUAAP//tm9ySdMOAAA=
"/ico/mstile-150x150.png": {
name: "mstile-150x150.png",
local: "../assets/ico/mstile-150x150.png",
local: "assets/ico/mstile-150x150.png",
size: 3150,
modtime: 1566640112,
compressed: `
@ -3511,7 +3511,7 @@ ALDHO9nUW/um/k8AAAD//0OrlCVODAAA
"/ico/safari-pinned-tab.svg": {
name: "safari-pinned-tab.svg",
local: "../assets/ico/safari-pinned-tab.svg",
local: "assets/ico/safari-pinned-tab.svg",
size: 3269,
modtime: 1566640112,
compressed: `
@ -3547,7 +3547,7 @@ Kq6S803nwUo2EKLdPwodVV3hH1vUzfKv3f5FuNzf8Of8ePMi/DsAAP//p/PiLcUMAAA=
"/ico/site.webmanifest": {
name: "site.webmanifest",
local: "../assets/ico/site.webmanifest",
local: "assets/ico/site.webmanifest",
size: 486,
modtime: 1566640112,
compressed: `
@ -3560,7 +3560,7 @@ oJE6K0E084u3ea7ne0X73qsc2P2KOB+ngKecxITsMAgTVJfqMwAA//+21HeD5gEAAA==
"/index.html": {
name: "index.html",
local: "../assets/index.html",
local: "assets/index.html",
size: 19906,
modtime: 1566640112,
compressed: `
@ -3650,7 +3650,7 @@ Lf8KdwPowg214Gi2bIB8ly3bT+3Lz00AO9CCMeMNCMPyfO4vOm4eN4W0JrQD//riCGDTt/Sqfmooz7u/
"/js/app.js": {
name: "app.js",
local: "../assets/js/app.js",
local: "assets/js/app.js",
size: 8796,
modtime: 1566640112,
compressed: `
@ -3704,7 +3704,7 @@ l6X/BQAA//9E4YQ5XCIAAA==
"/js/axios.min.js": {
name: "axios.min.js",
local: "../assets/js/axios.min.js",
local: "assets/js/axios.min.js",
size: 13696,
modtime: 1566640112,
compressed: `
@ -3792,7 +3792,7 @@ bV5Dhpjeo89DtZ18cXHxpySO/0dZVUpfv3v9QoT/RsrWSmdrWf1PAAAA//9i4Cm8gDUAAA==
"/js/axios.min.map": {
name: "axios.min.map",
local: "../assets/js/axios.min.map",
local: "assets/js/axios.min.map",
size: 111538,
modtime: 1566640112,
compressed: `
@ -4272,7 +4272,7 @@ vwMAAP//7F9IP7KzAQA=
"/js/bootstrap.bundle.min.js": {
name: "bootstrap.bundle.min.js",
local: "../assets/js/bootstrap.bundle.min.js",
local: "assets/js/bootstrap.bundle.min.js",
size: 81084,
modtime: 1566640112,
compressed: `
@ -4643,7 +4643,7 @@ RUGGa8qGP1XDdb75/wUAAP//nrAOULw8AQA=
"/js/bootstrap.bundle.min.js.map": {
name: "bootstrap.bundle.min.js.map",
local: "../assets/js/bootstrap.bundle.min.js.map",
local: "assets/js/bootstrap.bundle.min.js.map",
size: 315300,
modtime: 1566640112,
compressed: `
@ -6037,7 +6037,7 @@ gjbuSxZPBwTUYI6+OhhVKFLiU75e6Bz2CA/IUh8eOQdvBR43hzfg6dn9/w8AAP//KkzZx6TPBAA=
"/js/jquery-3.4.1.slim.min.js": {
name: "jquery-3.4.1.slim.min.js",
local: "../assets/js/jquery-3.4.1.slim.min.js",
local: "assets/js/jquery-3.4.1.slim.min.js",
size: 71037,
modtime: 1566640112,
compressed: `
@ -6455,7 +6455,7 @@ fwMAAP//+nQyTH0VAQA=
"/js/popper.min.js": {
name: "popper.min.js",
local: "../assets/js/popper.min.js",
local: "assets/js/popper.min.js",
size: 21257,
modtime: 1566640112,
compressed: `
@ -6590,7 +6590,7 @@ vwEAAP//kkhA4wlTAAA=
"/js/popper.min.js.map": {
name: "popper.min.js.map",
local: "../assets/js/popper.min.js.map",
local: "assets/js/popper.min.js.map",
size: 87922,
modtime: 1566640112,
compressed: `
@ -7012,7 +7012,7 @@ AA==
"/js/vue-router.min.js": {
name: "vue-router.min.js",
local: "../assets/js/vue-router.min.js",
local: "assets/js/vue-router.min.js",
size: 26370,
modtime: 1566640112,
compressed: `
@ -7177,7 +7177,7 @@ OT3S/P8EAAD//8jJpigCZwAA
"/js/vue.min.js": {
name: "vue.min.js",
local: "../assets/js/vue.min.js",
local: "assets/js/vue.min.js",
size: 93675,
modtime: 1566640112,
compressed: `
@ -7756,7 +7756,7 @@ vktRN/y22rLJ/wsAAP//uAubv+ttAQA=
"/webfonts/fa-brands-400.eot": {
name: "fa-brands-400.eot",
local: "../assets/webfonts/fa-brands-400.eot",
local: "assets/webfonts/fa-brands-400.eot",
size: 131930,
modtime: 1566640112,
compressed: `
@ -9262,7 +9262,7 @@ w+/vl/8uOn/D+KIyOyf/nwAAAP//+6qUCVoDAgA=
"/webfonts/fa-brands-400.svg": {
name: "fa-brands-400.svg",
local: "../assets/webfonts/fa-brands-400.svg",
local: "assets/webfonts/fa-brands-400.svg",
size: 708706,
modtime: 1566640112,
compressed: `
@ -13215,7 +13215,7 @@ CgA=
"/webfonts/fa-brands-400.ttf": {
name: "fa-brands-400.ttf",
local: "../assets/webfonts/fa-brands-400.ttf",
local: "assets/webfonts/fa-brands-400.ttf",
size: 131624,
modtime: 1566640112,
compressed: `
@ -14719,7 +14719,7 @@ KAICAA==
"/webfonts/fa-brands-400.woff": {
name: "fa-brands-400.woff",
local: "../assets/webfonts/fa-brands-400.woff",
local: "assets/webfonts/fa-brands-400.woff",
size: 89100,
modtime: 1566640112,
compressed: `
@ -16214,7 +16214,7 @@ uPLsbS4MUWxwTwdXwl2DoTvh9Z7t5DG22rA+lMO13wJZmRCuAQAA//9FQzp3DFwBAA==
"/webfonts/fa-brands-400.woff2": {
name: "fa-brands-400.woff2",
local: "../assets/webfonts/fa-brands-400.woff2",
local: "assets/webfonts/fa-brands-400.woff2",
size: 75936,
modtime: 1566640112,
compressed: `
@ -17490,7 +17490,7 @@ rH+5CZcm23QEsE8Qo8IQYcwucRvLahs8ZG5eBZuDlY2q9VerMQ8vHQaOVI+KGhFfIShrYnY33pww08pv
"/webfonts/fa-regular-400.eot": {
name: "fa-regular-400.eot",
local: "../assets/webfonts/fa-regular-400.eot",
local: "assets/webfonts/fa-regular-400.eot",
size: 34390,
modtime: 1566640112,
compressed: `
@ -17783,7 +17783,7 @@ a0Nl9gY77gnx6DcQh4S634Vn9shfPZj8Gb1/13zB4979/28AAAD//5yaTfNWhgAA
"/webfonts/fa-regular-400.svg": {
name: "fa-regular-400.svg",
local: "../assets/webfonts/fa-regular-400.svg",
local: "assets/webfonts/fa-regular-400.svg",
size: 144322,
modtime: 1566640112,
compressed: `
@ -18399,7 +18399,7 @@ QUJOIN4B5d2vK+ADqXQd1lmtlxv8dsH/FqoWHq4pjVnineUD5HvkSKXOf//Xb58/ff2f4b//6/3Db/v/
"/webfonts/fa-regular-400.ttf": {
name: "fa-regular-400.ttf",
local: "../assets/webfonts/fa-regular-400.ttf",
local: "assets/webfonts/fa-regular-400.ttf",
size: 34092,
modtime: 1566640112,
compressed: `
@ -18691,7 +18691,7 @@ dt1y1uLF8mTPuemxmYd8NDU/Oz09NTPRU360vEAWxsZ7zs8/KtE7BdelI21OWlian5ufWiiLi1Pz5XFm
"/webfonts/fa-regular-400.woff": {
name: "fa-regular-400.woff",
local: "../assets/webfonts/fa-regular-400.woff",
local: "assets/webfonts/fa-regular-400.woff",
size: 16800,
modtime: 1566640112,
compressed: `
@ -18981,7 +18981,7 @@ TWydZJWwvi+OjJ3WgyZjFqHPNu8YWWY1beyL21fX9qcc/YaJi3pTq8rQDQ0xH7mJhk1fsDrLB370C0ZN
"/webfonts/fa-regular-400.woff2": {
name: "fa-regular-400.woff2",
local: "../assets/webfonts/fa-regular-400.woff2",
local: "assets/webfonts/fa-regular-400.woff2",
size: 13576,
modtime: 1566640112,
compressed: `
@ -19217,7 +19217,7 @@ zJQ3hze0o0FwXm8DgXVlVQiLmmywpkXJsK+kGAAAAAEAAP//Fb5Hhwg1AAA=
"/webfonts/fa-solid-900.eot": {
name: "fa-solid-900.eot",
local: "../assets/webfonts/fa-solid-900.eot",
local: "assets/webfonts/fa-solid-900.eot",
size: 194066,
modtime: 1566640112,
compressed: `
@ -20906,7 +20906,7 @@ aQ5Cn3egWUWtmD1vv+f5du/sX+vf70x9sVb8jv9/AQAA///4QEiFEvYCAA==
"/webfonts/fa-solid-900.svg": {
name: "fa-solid-900.svg",
local: "../assets/webfonts/fa-solid-900.svg",
local: "assets/webfonts/fa-solid-900.svg",
size: 849145,
modtime: 1566640112,
compressed: `
@ -24756,7 +24756,7 @@ C7/C1FQ7ugZg/+4wSP/5H78+ff76X4f//I+Pj7+e/us//+N0/sd/Hf5PAAAA///8oGSU+fQMAA==
"/webfonts/fa-solid-900.ttf": {
name: "fa-solid-900.ttf",
local: "../assets/webfonts/fa-solid-900.ttf",
local: "assets/webfonts/fa-solid-900.ttf",
size: 193780,
modtime: 1566640112,
compressed: `
@ -26443,7 +26443,7 @@ l43F2nhyRrUC0x5RxXgR2o4Z1RloGRm0FkmDM1wz5FMXNOAi9OdZOog1QiHzJNV6jsVU2Onv4MEHHWi+
"/webfonts/fa-solid-900.woff": {
name: "fa-solid-900.woff",
local: "../assets/webfonts/fa-solid-900.woff",
local: "assets/webfonts/fa-solid-900.woff",
size: 98996,
modtime: 1566640112,
compressed: `
@ -28103,7 +28103,7 @@ Fhu7ouUZLbvlMwS1wOAxkmyRMEPxwdoY52Az5f8BditRlwAAAAEAAP//rVKejLSCAQA=
"/webfonts/fa-solid-900.woff2": {
name: "fa-solid-900.woff2",
local: "../assets/webfonts/fa-solid-900.woff2",
local: "assets/webfonts/fa-solid-900.woff2",
size: 76084,
modtime: 1566640112,
compressed: `
@ -29380,38 +29380,38 @@ qyfj+jzDqd+3UHB3GYzx8OkQYWBg/k8AAAD//3J5YZY0KQEA
"/": {
name: "/",
local: `../assets`,
local: `assets`,
isDir: true,
},
"/css": {
name: "css",
local: `../assets/css`,
local: `assets/css`,
isDir: true,
},
"/ico": {
name: "ico",
local: `../assets/ico`,
local: `assets/ico`,
isDir: true,
},
"/js": {
name: "js",
local: `../assets/js`,
local: `assets/js`,
isDir: true,
},
"/webfonts": {
name: "webfonts",
local: `../assets/webfonts`,
local: `assets/webfonts`,
isDir: true,
},
}
var _escDirs = map[string][]os.FileInfo{
"../assets": {
"assets": {
_escData["/css"],
_escData["/ico"],
_escData["/index.html"],
@ -29419,14 +29419,14 @@ var _escDirs = map[string][]os.FileInfo{
_escData["/webfonts"],
},
"../assets/css": {
"assets/css": {
_escData["/css/bootstrap.min.css"],
_escData["/css/bootstrap.min.css.map"],
_escData["/css/fontawesome.min.css"],
_escData["/css/solid.min.css"],
},
"../assets/ico": {
"assets/ico": {
_escData["/ico/android-chrome-192x192.png"],
_escData["/ico/android-chrome-512x512.png"],
_escData["/ico/apple-touch-icon.png"],
@ -29440,7 +29440,7 @@ var _escDirs = map[string][]os.FileInfo{
_escData["/ico/site.webmanifest"],
},
"../assets/js": {
"assets/js": {
_escData["/js/app.js"],
_escData["/js/axios.min.js"],
_escData["/js/axios.min.map"],
@ -29453,7 +29453,7 @@ var _escDirs = map[string][]os.FileInfo{
_escData["/js/vue.min.js"],
},
"../assets/webfonts": {
"assets/webfonts": {
_escData["/webfonts/fa-brands-400.eot"],
_escData["/webfonts/fa-brands-400.svg"],
_escData["/webfonts/fa-brands-400.ttf"],

View file

@ -15,12 +15,6 @@ import (
"github.com/gorilla/mux"
)
//go:generate esc -o assets.go -pkg server -modtime 1566640112 -ignore .DS_Store -prefix ../assets ../assets
const (
liveAssets = false
)
// MenuConfig is used to inject the menu configuration into the UI
type MenuConfig struct {
Title string
@ -74,22 +68,22 @@ func routeLogger(inner http.Handler) http.HandlerFunc {
}
func indexHandler(links []MenuConfig, site site, liveAssets bool) http.HandlerFunc {
indexTemplate, err := FSString(liveAssets, "/index.html")
if err != nil {
log.FATAL.Fatal("httpd: failed to load embedded template: " + err.Error())
}
t, err := template.New("evcc").Delims("<<", ">>").Parse(indexTemplate)
if err != nil {
log.FATAL.Fatal("httpd: failed to create main page template: ", err.Error())
}
_, debug := _escData["/js/debug.js"]
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// w.Header().Set("Content-Type", "text/html; charset=UTF-8")
// w.WriteHeader(http.StatusOK)
indexTemplate, err := FSString(liveAssets, "/index.html")
if err != nil {
log.FATAL.Fatal("httpd: failed to load embedded template: " + err.Error())
}
t, err := template.New("evcc").Delims("<<", ">>").Parse(indexTemplate)
if err != nil {
log.FATAL.Fatal("httpd: failed to create main page template: ", err.Error())
}
if err := t.Execute(w, map[string]interface{}{
"Version": Version,
"Commit": Commit,

7
server/liveAssets_dev.go Normal file
View file

@ -0,0 +1,7 @@
// +build dev
package server
const (
liveAssets = true
)

View file

@ -0,0 +1,7 @@
// +build !dev
package server
const (
liveAssets = false
)