diff --git a/main.go b/main.go index 06c979eaf..21551d7aa 100644 --- a/main.go +++ b/main.go @@ -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" ) diff --git a/server/assets.go b/server/assets.go index 0e72eb798..4aaee8b45 100644 --- a/server/assets.go +++ b/server/assets.go @@ -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"], diff --git a/server/http.go b/server/http.go index c1cfa9624..84bc23a0a 100644 --- a/server/http.go +++ b/server/http.go @@ -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, diff --git a/server/liveAssets_dev.go b/server/liveAssets_dev.go new file mode 100644 index 000000000..f65ec448e --- /dev/null +++ b/server/liveAssets_dev.go @@ -0,0 +1,7 @@ +// +build dev + +package server + +const ( + liveAssets = true +) diff --git a/server/liveAssets_release.go b/server/liveAssets_release.go new file mode 100644 index 000000000..bbd781015 --- /dev/null +++ b/server/liveAssets_release.go @@ -0,0 +1,7 @@ +// +build !dev + +package server + +const ( + liveAssets = false +)