Skip to content

Commit

Permalink
chore: replace statik with go:embed
Browse files Browse the repository at this point in the history
  • Loading branch information
powerman committed Feb 21, 2021
1 parent 47cd04e commit b9dde40
Show file tree
Hide file tree
Showing 18 changed files with 58 additions and 65 deletions.
1 change: 0 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
# na/**/me - apply (* doesn't match /) to file "na/me", "na/*/me", "na/*/*/me", …
go.sum binary
*.*.go binary
statik*.go binary
/third_party/*/** binary
/api/proto/**/*.swagger.json binary
/api/**/model/** binary
Expand Down
5 changes: 5 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,11 @@ issues:
linters:
- govet

# Files with go:embed directives are designed to contain global constants.
- path: ^(.*/)?embed.go$
linters:
- gochecknoglobals

# Package def is designed to contain global constants.
- path: pkg/def/
linters:
Expand Down
8 changes: 8 additions & 0 deletions api/proto/embed.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// Package proto contains embedded files.
package proto

import "embed"

// OpenAPI contains path/to/*.swagger.json for public gRPC services.
//go:embed */*/*/*.swagger.json
var OpenAPI embed.FS
3 changes: 1 addition & 2 deletions api/proto/powerman/example/auth/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,4 @@ package api
// - `buf` must be run in project's root
// - protoc plugins must be in $PATH
// - remove useless swagger.json needlessly generated for internal API
// - set swagger.json mtime to latest of it's sources, to ensure statik won't update it needlessly
//go:generate bash -e -o pipefail -c "rm -f *.pb.* *.swagger.json; d=./$(git rev-parse --show-prefix); cd $(git rev-parse --show-toplevel); export PATH=$PWD/.gobincache:$DOLLAR{PATH}; buf generate --template $DOLLAR{d}buf.gen.yaml --path $DOLLAR{d}; rm -f $DOLLAR{d}*_int.swagger.json; touch -r $(ls -t $DOLLAR{d}*.proto $DOLLAR{d}*.openapi.yml | head -n 1) $DOLLAR{d}service.swagger.json"
//go:generate bash -e -o pipefail -c "rm -f *.pb.* *.swagger.json; d=./$(git rev-parse --show-prefix); cd $(git rev-parse --show-toplevel); export PATH=$PWD/.gobincache:$DOLLAR{PATH}; buf generate --template $DOLLAR{d}buf.gen.yaml --path $DOLLAR{d}; rm -f $DOLLAR{d}*_int.swagger.json"
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ require (
github.com/grpc-ecosystem/grpc-gateway/v2 v2.2.0
github.com/jackc/pgtype v1.6.2
github.com/jmoiron/sqlx v1.3.1
github.com/laher/mergefs v0.1.0
github.com/lib/pq v1.9.0
github.com/mattn/goveralls v0.0.7
github.com/nats-io/nats-streaming-server v0.20.0 // indirect
Expand All @@ -37,7 +38,6 @@ require (
github.com/powerman/sqlxx v0.2.0
github.com/powerman/structlog v0.7.1
github.com/prometheus/client_golang v1.9.0
github.com/rakyll/statik v0.1.7
github.com/rs/cors v1.7.0
github.com/sebest/xff v0.0.0-20210106013422-671bd2870b3a
github.com/smartystreets/goconvey v1.6.4
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -526,6 +526,8 @@ github.com/kunwardeep/paralleltest v1.0.2/go.mod h1:ZPqNm1fVHPllh5LPVujzbVz1JN2G
github.com/kyoh86/exportloopref v0.1.7/go.mod h1:h1rDl2Kdj97+Kwh4gdz3ujE7XHmH51Q0lUiZ1z4NLj8=
github.com/kyoh86/exportloopref v0.1.8 h1:5Ry/at+eFdkX9Vsdw3qU4YkvGtzuVfzT4X7S77LoN/M=
github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg=
github.com/laher/mergefs v0.1.0 h1:1z8HU0OLw0shUoFUhLpTcuYHIO9vQ7HYE9XJZZ8W4dE=
github.com/laher/mergefs v0.1.0/go.mod h1:2E0+cofr6j50xDp498L6VlZV1b2wgNjI7rICQUWqrU8=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
Expand Down Expand Up @@ -782,8 +784,6 @@ github.com/quasilyte/go-ruleguard/dsl v0.0.0-20210115110123-c73ee1cbff1f/go.mod
github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc=
github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY=
github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0=
github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ=
github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc=
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
Expand Down
27 changes: 7 additions & 20 deletions ms/auth/internal/srv/grpcgw/srv.go
Original file line number Diff line number Diff line change
@@ -1,25 +1,20 @@
// Package grpcgw provides grpc-gateway server.
package grpcgw

//go:generate -command statik sh -c "$(git rev-parse --show-toplevel)/.gobincache/$DOLLAR{DOLLAR}0 \"$DOLLAR{DOLLAR}@\"" statik
//go:generate rm -rf statik
//go:generate statik -ns "Swagger UI" -src ../../../../../web/static/swagger-ui
//go:generate mv statik/statik.go statik/statik-swaggerui.go
//go:generate statik -ns "OpenAPI" -src ../../../../../api/proto -include "*.swagger.json"
//go:generate mv statik/statik.go statik/statik-openapi.go

import (
"context"
"crypto/x509"
"net/http"

"github.com/grpc-ecosystem/grpc-gateway/v2/runtime"
"github.com/rakyll/statik/fs"
"github.com/laher/mergefs"

"github.com/powerman/go-monolith-example/api/proto"
api "github.com/powerman/go-monolith-example/api/proto/powerman/example/auth"
"github.com/powerman/go-monolith-example/ms/auth/internal/srv/grpcgw/statik"
"github.com/powerman/go-monolith-example/pkg/grpcx"
"github.com/powerman/go-monolith-example/pkg/netx"
"github.com/powerman/go-monolith-example/third_party"
"github.com/powerman/go-monolith-example/web"
)

// Ctx is a synonym for convenience.
Expand Down Expand Up @@ -49,18 +44,10 @@ func NewServer(cfg Config) (*http.ServeMux, error) {
return nil, err
}

statikOpenAPI, err := fs.NewWithNamespace(statik.OpenAPI)
if err != nil {
return nil, err
}
statikSwaggerUI, err := fs.NewWithNamespace(statik.SwaggerUI)
if err != nil {
return nil, err
}

mux := http.NewServeMux()
mux.Handle(cfg.GRPCGWPattern, noCache(corsAllowAll(gw)))
mux.Handle(cfg.OpenAPIPattern, http.StripPrefix(cfg.OpenAPIPattern, http.FileServer(statikOpenAPI)))
mux.Handle(cfg.SwaggerUIPattern, http.StripPrefix(cfg.SwaggerUIPattern, http.FileServer(statikSwaggerUI)))
mux.Handle(cfg.OpenAPIPattern, http.StripPrefix(cfg.OpenAPIPattern, http.FileServer(http.FS(proto.OpenAPI))))
mux.Handle(cfg.SwaggerUIPattern, http.StripPrefix(cfg.SwaggerUIPattern, http.FileServer(http.FS(
mergefs.Merge(web.SwaggerUI, third_party.SwaggerUI)))))
return mux, nil
}
16 changes: 0 additions & 16 deletions ms/auth/internal/srv/grpcgw/statik/statik-openapi.go

This file was deleted.

16 changes: 0 additions & 16 deletions ms/auth/internal/srv/grpcgw/statik/statik-swaggerui.go

This file was deleted.

20 changes: 20 additions & 0 deletions third_party/embed.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Package third_party contains embedded files.
package third_party

import (
"embed"
"io/fs"
)

var (
//go:embed swagger-ui/dist/favicon-16x16.png
//go:embed swagger-ui/dist/favicon-32x32.png
//go:embed swagger-ui/dist/oauth2-redirect.html
//go:embed swagger-ui/dist/swagger-ui-bundle.js
//go:embed swagger-ui/dist/swagger-ui.css
//go:embed swagger-ui/dist/swagger-ui-standalone-preset.js
swaggerUI embed.FS
// SwaggerUI contains static files for Swagger UI required by
// our ../web/static/swagger-ui/index.html.
SwaggerUI, _ = fs.Sub(swaggerUI, "swagger-ui/dist")
)
1 change: 0 additions & 1 deletion tools.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (
_ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"
_ "github.com/mattn/goveralls"
_ "github.com/powerman/dockerize"
_ "github.com/rakyll/statik"
_ "golang.org/x/tools/cmd/stringer"
_ "google.golang.org/grpc/cmd/protoc-gen-go-grpc"
_ "google.golang.org/protobuf/cmd/protoc-gen-go"
Expand Down
14 changes: 14 additions & 0 deletions web/embed.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Package web contains embedded files.
package web

import (
"embed"
"io/fs"
)

var (
//go:embed static/swagger-ui/index.html
swaggerUI embed.FS
// SwaggerUI contains overlay files for third_party.SwaggerUI.
SwaggerUI, _ = fs.Sub(swaggerUI, "static/swagger-ui")
)
1 change: 0 additions & 1 deletion web/static/swagger-ui/favicon-16x16.png

This file was deleted.

1 change: 0 additions & 1 deletion web/static/swagger-ui/favicon-32x32.png

This file was deleted.

1 change: 0 additions & 1 deletion web/static/swagger-ui/oauth2-redirect.html

This file was deleted.

1 change: 0 additions & 1 deletion web/static/swagger-ui/swagger-ui-bundle.js

This file was deleted.

1 change: 0 additions & 1 deletion web/static/swagger-ui/swagger-ui-standalone-preset.js

This file was deleted.

1 change: 0 additions & 1 deletion web/static/swagger-ui/swagger-ui.css

This file was deleted.

0 comments on commit b9dde40

Please sign in to comment.