Merge pull request #510 from MobileTeleSystems/go-1-16-embed

go 1.16 features
This commit is contained in:
Dan Sosedoff 2021-03-26 21:54:30 -05:00 committed by GitHub
commit 4adba368c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 34 additions and 771 deletions

View File

@ -11,14 +11,10 @@ addons:
postgresql: "9.6"
go:
- "1.12"
- "1.13"
- "1.14"
- "1.15"
- "1.16"
before_install:
- ./script/check_formatting.sh
- ./script/check_assets.sh
install:
- make setup

View File

@ -2,7 +2,6 @@ TARGETS = darwin/amd64 linux/amd64 linux/386 windows/amd64 windows/386
GIT_COMMIT = $(shell git rev-parse HEAD)
BUILD_TIME = $(shell date -u +"%Y-%m-%dT%H:%M:%SZ" | tr -d '\n')
GO_VERSION = $(shell go version | awk {'print $$3'})
BINDATA_IGNORE = $(shell git ls-files -io --exclude-standard $< | sed 's/^/-ignore=/;s/[.]/[.]/g')
DOCKER_RELEASE_TAG = "sosedoff/pgweb:$(shell git describe --abbrev=0 --tags | sed 's/v//')"
DOCKER_LATEST_TAG = "sosedoff/pgweb:latest"
@ -18,35 +17,29 @@ usage:
@echo "make test : Execute test suite"
@echo "make test-all : Execute test suite on multiple PG versions"
@echo "make clean : Remove all build files and reset assets"
@echo "make assets : Generate production assets file"
@echo "make dev-assets : Generate development assets file"
@echo "make docker : Build docker image"
@echo "make docker-release : Build and tag docker image"
@echo "make docker-push : Push docker images to registry"
@echo ""
test:
GO111MODULE=on go test -race -cover ./pkg/...
go test -race -cover ./pkg/...
test-all:
@./script/test_all.sh
@./script/test_cockroach.sh
assets: static/
go-bindata -o pkg/data/bindata.go -pkg data $(BINDATA_OPTS) $(BINDATA_IGNORE) -ignore=[.]gitignore -ignore=[.]gitkeep $<...
dev-assets:
@$(MAKE) --no-print-directory assets BINDATA_OPTS="-debug"
dev: dev-assets
GO111MODULE=on go build
dev:
go build
@echo "You can now execute ./pgweb"
build: assets
GO111MODULE=on go build
build:
go build
@echo "You can now execute ./pgweb"
release: clean assets
release:
@echo "Building binaries..."
@gox \
-osarch "$(TARGETS)" \
@ -54,12 +47,12 @@ release: clean assets
-output "./bin/pgweb_{{.OS}}_{{.Arch}}"
@echo "Building ARM binaries..."
GO111MODULE=on GOOS=linux GOARCH=arm GOARM=5 go build \
GOOS=linux GOARCH=arm GOARM=5 go build \
-ldflags "-s -w -X github.com/sosedoff/pgweb/pkg/command.GitCommit=$(GIT_COMMIT) -X github.com/sosedoff/pgweb/pkg/command.BuildTime=$(BUILD_TIME) -X github.com/sosedoff/pgweb/pkg/command.GoVersion=$(GO_VERSION)" \
-o "./bin/pgweb_linux_arm_v5"
@echo "Building ARM64 binaries..."
GO111MODULE=on GOOS=linux GOARCH=arm64 GOARM=7 go build \
GOOS=linux GOARCH=arm64 GOARM=7 go build \
-ldflags "-s -w -X github.com/sosedoff/pgweb/pkg/command.GitCommit=$(GIT_COMMIT) -X github.com/sosedoff/pgweb/pkg/command.BuildTime=$(BUILD_TIME) -X github.com/sosedoff/pgweb/pkg/command.GoVersion=$(GO_VERSION)" \
-o "./bin/pgweb_linux_arm64_v7"
@ -70,13 +63,11 @@ bootstrap:
gox -build-toolchain
setup:
go get -u github.com/mitchellh/gox
go get -u github.com/go-bindata/go-bindata/...
go install github.com/mitchellh/gox@v1.0.1
clean:
@rm -f ./pgweb
@rm -rf ./bin/*
@rm -f bindata.go
docker:
docker build --no-cache -t pgweb .

View File

@ -2,13 +2,19 @@ clone_folder: c:\gopath\src\github.com\sosedoff\pgweb
environment:
GOPATH: c:\gopath
GOROOT: c:\goroot116\go
GOTOOLDIR: c:\goroot116\go\pkg\tool\windows_amd64
CGO_ENABLED: 0
services:
- postgresql
install:
- ps: mkdir c:\goroot116
- ps: iwr -outf c:\goroot116\go1.16.windows-amd64.zip https://golang.org/dl/go1.16.windows-amd64.zip
- ps: Expand-Archive c:\goroot116\go1.16.windows-amd64.zip -DestinationPath c:\goroot116
- set PATH=%GOPATH%\bin;%PATH%
- set PATH=%GOROOT%\bin;%PATH%
- echo %PATH%
- echo %GOPATH%
- cd %APPVEYOR_BUILD_FOLDER%

2
go.mod
View File

@ -1,6 +1,6 @@
module github.com/sosedoff/pgweb
go 1.12
go 1.16
require (
github.com/BurntSushi/toml v0.3.1

View File

@ -3,6 +3,8 @@ package api
import (
"encoding/base64"
"fmt"
"github.com/sosedoff/pgweb/static"
"net/http"
neturl "net/url"
"regexp"
"strings"
@ -56,13 +58,12 @@ func setClient(c *gin.Context, newClient *client.Client) error {
}
// GetHome renderes the home page
func GetHome(c *gin.Context) {
serveStaticAsset("/index.html", c)
func GetHome() http.Handler {
return http.FileServer(http.FS(static.Static))
}
// GetAsset renders the requested static asset
func GetAsset(c *gin.Context) {
serveStaticAsset(c.Params.ByName("path"), c)
func GetAssets() http.Handler {
return http.StripPrefix("/static/", http.FileServer(http.FS(static.Static)))
}
// GetSessions renders the number of active sessions

View File

@ -10,7 +10,6 @@ import (
"github.com/gin-gonic/gin"
"github.com/sosedoff/pgweb/pkg/data"
"github.com/sosedoff/pgweb/pkg/shared"
)
@ -145,16 +144,6 @@ func assetContentType(name string) string {
return result
}
func serveStaticAsset(path string, c *gin.Context) {
data, err := data.Asset("static" + path)
if err != nil {
c.String(400, err.Error())
return
}
c.Data(200, assetContentType(path), data)
}
// Send a query result to client
func serveResult(c *gin.Context, result interface{}, err interface{}) {
if err == nil {

View File

@ -20,8 +20,8 @@ func SetupMiddlewares(group *gin.RouterGroup) {
func SetupRoutes(router *gin.Engine) {
root := router.Group(command.Opts.Prefix)
root.GET("/", GetHome)
root.GET("/static/*path", GetAsset)
root.GET("/", gin.WrapH(GetHome()))
root.GET("/static/*path", gin.WrapH(GetAssets()))
root.GET("/connect/:resource", ConnectWithBackend)
api := root.Group("/api")

File diff suppressed because one or more lines are too long

View File

@ -1,10 +0,0 @@
#!/bin/bash
if grep -q 'go/src/github.com/sosedoff/pgweb' ./pkg/data/bindata.go
then
echo "=========================================================="
echo "ERROR: Bindata contains development references to assets!"
echo "Fix with 'make assets' and commit the change."
echo "=========================================================="
exit 1
fi

View File

@ -1,8 +1,5 @@
#!/bin/bash
# Run the fmt on bindata so it does not trigger failure
go fmt ./pkg/data/bindata.go > /dev/null
# Get list of offending files
files="$(go fmt ./pkg/...)"

View File

7
static/data.go Normal file
View File

@ -0,0 +1,7 @@
package static
import "embed"
//go:embed img/* js/* css/* fonts/*
//go:embed index.html
var Static embed.FS