From 13542949c2be880782363b29832083c395b7538c Mon Sep 17 00:00:00 2001 From: NI Date: Sat, 18 Jul 2020 18:33:48 +0800 Subject: [PATCH] Make `application/controller/static.go` the source code generate trigger instead of `application/controller/static_pages.go` --- application/controller/static.go | 3 + .../controller/static_page_generater/main.go | 50 +++--- application/controller/static_pages.go | 157 ------------------ 3 files changed, 27 insertions(+), 183 deletions(-) delete mode 100644 application/controller/static_pages.go diff --git a/application/controller/static.go b/application/controller/static.go index 058442d..18232ee 100644 --- a/application/controller/static.go +++ b/application/controller/static.go @@ -15,6 +15,9 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . +//go:generate go run ./static_page_generater ../../.tmp/dist ./static_pages.go +//go:generate go fmt ./static_pages.go + package controller import ( diff --git a/application/controller/static_page_generater/main.go b/application/controller/static_page_generater/main.go index 8a0da60..e811249 100644 --- a/application/controller/static_page_generater/main.go +++ b/application/controller/static_page_generater/main.go @@ -18,7 +18,6 @@ package main import ( - "bufio" "bytes" "compress/gzip" "crypto/sha256" @@ -40,6 +39,27 @@ const ( ) const ( + staticListHeader = `// Sshwifty - A Web SSH client +// +// Copyright (C) 2019-2020 Rui NI +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package controller + +` + staticListTemplate = `import "time" var ( @@ -413,7 +433,7 @@ func main() { destFolderPath, destFolderPathErr)) } - listFile, listFileErr := os.OpenFile(listFilePath, os.O_RDWR, 0666) + listFile, listFileErr := os.Create(listFilePath) if listFileErr != nil { panic(fmt.Sprintf("Unable to open destination list file %s: %s", @@ -428,29 +448,7 @@ func main() { panic(fmt.Sprintf("Unable to open dir: %s", dirOpenErr)) } - scanner := bufio.NewScanner(listFile) - destBytesByPass := int64(0) - foundLastLine := false - - for scanner.Scan() { - text := scanner.Text() - - if strings.Index(text, templateStarts) < 0 { - if foundLastLine { - break - } - - destBytesByPass += int64(len(text) + 1) - - continue - } - - destBytesByPass += int64(len(text) + 1) - foundLastLine = true - } - - listFile.Seek(destBytesByPass, 0) - listFile.Truncate(destBytesByPass) + listFile.WriteString(staticListHeader) listFile.WriteString("\n// This file is generated by `go generate` at " + time.Now().Format(time.RFC1123) + "\n// DO NOT EDIT!\n\n") @@ -516,7 +514,7 @@ func main() { } listFile.WriteString( - "\nimport \"" + parentPackage + "/" + destFolderPackage + "\"\n\n") + "\nimport \"" + parentPackage + "/" + destFolderPackage + "\"\n") tempBuildErr := buildListFile(listFile, parsedFiles) diff --git a/application/controller/static_pages.go b/application/controller/static_pages.go deleted file mode 100644 index 8af228d..0000000 --- a/application/controller/static_pages.go +++ /dev/null @@ -1,157 +0,0 @@ -// Sshwifty - A Web SSH client -// -// Copyright (C) 2019-2020 Rui NI -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as -// published by the Free Software Foundation, either version 3 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see . - -package controller - -//go:generate go run ./static_page_generater ../../.tmp/dist ./static_pages.go -//go:generate go fmt ./static_pages.go - -// This file is generated by `go generate` at Thu, 12 Mar 2020 20:25:38 CST -// DO NOT EDIT! - -import "github.com/niruix/sshwifty/application/controller/static_pages" - -import "time" - -var ( - staticPages = map[string]staticData{ - "0.2591207cde2357871355.js": parseStaticData(static_pages.Static0()), - "010c539b67fe9bacabc4ec5dbff1546b.svg": parseStaticData(static_pages.Static1()), - "0b3811d040152efecd499f74a840805b.woff2": parseStaticData(static_pages.Static2()), - "132527c8a67bf941ca84add5608a81a3.woff": parseStaticData(static_pages.Static3()), - "13ec0eb5bdb821ff4930237d7c9f943f.woff2": parseStaticData(static_pages.Static4()), - "13efe6cbc10b97144a28310ebdeda594.woff": parseStaticData(static_pages.Static5()), - "1d6594826615607f6dc860bb49258acb.woff": parseStaticData(static_pages.Static6()), - "2.2591207cde2357871355.js": parseStaticData(static_pages.Static7()), - "23d1ed95cedfe6dc88667aa59d91a620.woff2": parseStaticData(static_pages.Static8()), - "2591207cde2357871355.css": parseStaticData(static_pages.Static9()), - "2591207cde2357871355.css.map": parseStaticData(static_pages.Static10()), - "2591207cde2357871355.js": parseStaticData(static_pages.Static11()), - "3.2591207cde2357871355.js": parseStaticData(static_pages.Static12()), - "313a65630d341645c13e4f2a0364381d.woff": parseStaticData(static_pages.Static13()), - "35b07eb2f8711ae08d1f58c043880930.woff": parseStaticData(static_pages.Static14()), - "3aa797141ef00f0aa9fc.css": parseStaticData(static_pages.Static15()), - "3aa797141ef00f0aa9fc.css.map": parseStaticData(static_pages.Static16()), - "4.2591207cde2357871355.js": parseStaticData(static_pages.Static17()), - "4357beb823a5f8d65c260f045d9e019a.woff2": parseStaticData(static_pages.Static18()), - "4fe0f73cc919ba2b7a3c36e4540d725c.woff": parseStaticData(static_pages.Static19()), - "5.2591207cde2357871355.js": parseStaticData(static_pages.Static20()), - "50d75e48e0a3ddab1dd15d6bfb9d3700.woff": parseStaticData(static_pages.Static21()), - "59eb3601394dd87f30f82433fb39dd94.woff2": parseStaticData(static_pages.Static22()), - "5b4a33e176ff736a74f0ca2dd9e6b396.woff2": parseStaticData(static_pages.Static23()), - "6.2591207cde2357871355.js": parseStaticData(static_pages.Static24()), - "73f0a88bbca1bec19fb1303c689d04c6.woff2": parseStaticData(static_pages.Static25()), - "83e114c316fcc3f23f524ec3e1c65984.woff": parseStaticData(static_pages.Static26()), - "8a96edbbcd9a6991d79371aed0b0288e.woff": parseStaticData(static_pages.Static27()), - "8ec888af4672fe48c5560b5e7c0ecb78.woff": parseStaticData(static_pages.Static28()), - "90d1676003d9c28c04994c18bfd8b558.woff2": parseStaticData(static_pages.Static29()), - "94008e69aaf05da75c0bbf8f8bb0db41.woff2": parseStaticData(static_pages.Static30()), - "DEPENDENCIES.md": parseStaticData(static_pages.Static31()), - "LICENSE.md": parseStaticData(static_pages.Static32()), - "README.md": parseStaticData(static_pages.Static33()), - "ad538a69b0e8615ed0419c4529344ffc.woff2": parseStaticData(static_pages.Static34()), - "android-chrome-144x144.png": parseStaticData(static_pages.Static35()), - "android-chrome-192x192.png": parseStaticData(static_pages.Static36()), - "android-chrome-256x256.png": parseStaticData(static_pages.Static37()), - "android-chrome-36x36.png": parseStaticData(static_pages.Static38()), - "android-chrome-384x384.png": parseStaticData(static_pages.Static39()), - "android-chrome-48x48.png": parseStaticData(static_pages.Static40()), - "android-chrome-512x512.png": parseStaticData(static_pages.Static41()), - "android-chrome-72x72.png": parseStaticData(static_pages.Static42()), - "android-chrome-96x96.png": parseStaticData(static_pages.Static43()), - "apple-touch-icon-1024x1024.png": parseStaticData(static_pages.Static44()), - "apple-touch-icon-114x114.png": parseStaticData(static_pages.Static45()), - "apple-touch-icon-120x120.png": parseStaticData(static_pages.Static46()), - "apple-touch-icon-144x144.png": parseStaticData(static_pages.Static47()), - "apple-touch-icon-152x152.png": parseStaticData(static_pages.Static48()), - "apple-touch-icon-167x167.png": parseStaticData(static_pages.Static49()), - "apple-touch-icon-180x180.png": parseStaticData(static_pages.Static50()), - "apple-touch-icon-57x57.png": parseStaticData(static_pages.Static51()), - "apple-touch-icon-60x60.png": parseStaticData(static_pages.Static52()), - "apple-touch-icon-72x72.png": parseStaticData(static_pages.Static53()), - "apple-touch-icon-76x76.png": parseStaticData(static_pages.Static54()), - "apple-touch-icon-precomposed.png": parseStaticData(static_pages.Static55()), - "apple-touch-icon.png": parseStaticData(static_pages.Static56()), - "apple-touch-startup-image-1182x2208.png": parseStaticData(static_pages.Static57()), - "apple-touch-startup-image-1242x2148.png": parseStaticData(static_pages.Static58()), - "apple-touch-startup-image-1496x2048.png": parseStaticData(static_pages.Static59()), - "apple-touch-startup-image-1536x2008.png": parseStaticData(static_pages.Static60()), - "apple-touch-startup-image-320x460.png": parseStaticData(static_pages.Static61()), - "apple-touch-startup-image-640x1096.png": parseStaticData(static_pages.Static62()), - "apple-touch-startup-image-640x920.png": parseStaticData(static_pages.Static63()), - "apple-touch-startup-image-748x1024.png": parseStaticData(static_pages.Static64()), - "apple-touch-startup-image-750x1294.png": parseStaticData(static_pages.Static65()), - "apple-touch-startup-image-768x1004.png": parseStaticData(static_pages.Static66()), - "b52fac2bb93c5858f3f2675e4b52e1de.woff2": parseStaticData(static_pages.Static67()), - "browserconfig.xml": parseStaticData(static_pages.Static68()), - "c023bfb8571ccdf77bdd94a308ea3162.svg": parseStaticData(static_pages.Static69()), - "c6af87fef241bf953aa3.css": parseStaticData(static_pages.Static70()), - "c6af87fef241bf953aa3.css.map": parseStaticData(static_pages.Static71()), - "c73eb1ceba3321a80a0aff13ad373cb4.woff": parseStaticData(static_pages.Static72()), - "cc2fadc3928f2f223418887111947b40.woff": parseStaticData(static_pages.Static73()), - "d26871e8149b5759f814fd3c7a4f784b.woff2": parseStaticData(static_pages.Static74()), - "d3b47375afd904983d9be8d6e239a949.woff": parseStaticData(static_pages.Static75()), - "d4a48f0f981279da0e207e47516f4354.woff": parseStaticData(static_pages.Static76()), - "d569415005f26953bb9c3c52895355eb.woff2": parseStaticData(static_pages.Static77()), - "e72f2a56d5e5f8c8decc.css": parseStaticData(static_pages.Static78()), - "e72f2a56d5e5f8c8decc.css.map": parseStaticData(static_pages.Static79()), - "e8eaae902c3a4dacb9a5062667e10576.woff2": parseStaticData(static_pages.Static80()), - "error.html": parseStaticData(static_pages.Static81()), - "f5902d5ef961717ed263902fc429e6ae.woff": parseStaticData(static_pages.Static82()), - "f75569f8a5fab0893fa712d8c0d9c3fe.woff2": parseStaticData(static_pages.Static83()), - "f93c333e41413ed8548b714ad10a14fe.woff2": parseStaticData(static_pages.Static84()), - "favicon-16x16.png": parseStaticData(static_pages.Static85()), - "favicon-32x32.png": parseStaticData(static_pages.Static86()), - "favicon.ico": parseStaticData(static_pages.Static87()), - "fdea8596c4f9e3699f0cd51255a9e0f1.woff": parseStaticData(static_pages.Static88()), - "firefox_app_128x128.png": parseStaticData(static_pages.Static89()), - "firefox_app_512x512.png": parseStaticData(static_pages.Static90()), - "firefox_app_60x60.png": parseStaticData(static_pages.Static91()), - "index.html": parseStaticData(static_pages.Static92()), - "manifest.json": parseStaticData(static_pages.Static93()), - "manifest.webapp": parseStaticData(static_pages.Static94()), - "mstile-144x144.png": parseStaticData(static_pages.Static95()), - "mstile-150x150.png": parseStaticData(static_pages.Static96()), - "mstile-310x150.png": parseStaticData(static_pages.Static97()), - "mstile-310x310.png": parseStaticData(static_pages.Static98()), - "mstile-70x70.png": parseStaticData(static_pages.Static99()), - "robots.txt": parseStaticData(static_pages.Static100()), - } -) - -// parseStaticData parses result from a static file returner and generate -// a new `staticData` item -func parseStaticData( - fileStart int, - fileEnd int, - compressedStart int, - compressedEnd int, - contentHash string, - compressedHash string, - creation time.Time, - data []byte, - contentType string, -) staticData { - return staticData{ - data: data[fileStart:fileEnd], - dataHash: contentHash, - compressd: data[compressedStart:compressedEnd], - compressdHash: compressedHash, - created: creation, - contentType: contentType, - } -}