Compare commits
23 Commits
guardrails
...
v1.8.0
Author | SHA1 | Date | |
---|---|---|---|
|
d6e112de34 | ||
|
f3d1bfdee9 | ||
|
066f210f39 | ||
|
b244c9cc31 | ||
|
3a6b47dc92 | ||
|
5b5d8bf81e | ||
|
42f1289ddc | ||
|
2d28c0f341 | ||
|
e4d1fef8fe | ||
|
1d71729a7c | ||
|
c6eca2356c | ||
|
3576fd314a | ||
|
f43d2a2ac8 | ||
|
baffaa4b6a | ||
|
db5e9b7f99 | ||
|
be3a88a34a | ||
|
bd48cf6168 | ||
|
7110803a05 | ||
|
c41132a4f6 | ||
|
36f4177b68 | ||
|
1ff20846eb | ||
|
5202ea7a53 | ||
|
6949b76e12 |
1
.github/CODEOWNERS
vendored
Normal file
1
.github/CODEOWNERS
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
* @moul
|
6
.github/FUNDING.yml
vendored
Normal file
6
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
#github: ["moul"]
|
||||||
|
patreon: moul
|
||||||
|
open_collective: moul
|
||||||
|
custom:
|
||||||
|
- "https://www.buymeacoffee.com/moul"
|
||||||
|
- "https://manfred.life/donate"
|
31
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
31
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
name: Bug report
|
||||||
|
about: Create a report to help us improve
|
||||||
|
title: "[BUG] "
|
||||||
|
labels: bug
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Describe the bug**
|
||||||
|
A clear and concise description of what the bug is.
|
||||||
|
|
||||||
|
**To Reproduce**
|
||||||
|
Steps to reproduce the behavior:
|
||||||
|
1. Go to '...'
|
||||||
|
2. Type '....'
|
||||||
|
3. See error
|
||||||
|
|
||||||
|
**Expected behavior**
|
||||||
|
A clear and concise description of what you expected to happen.
|
||||||
|
|
||||||
|
**Screenshots / Logs**
|
||||||
|
If applicable, add screenshots or logs to help explain your problem.
|
||||||
|
|
||||||
|
**Versions (please complete the following information, if relevant):**
|
||||||
|
- Software version: [e.g. v1.2.3, latest, building from sources]
|
||||||
|
- OS: [e.g. Ubuntu, Mac, iOS, ...]
|
||||||
|
- Golang version [e.g. 1.13]
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context about the problem here.
|
8
.github/ISSUE_TEMPLATE/custom.md
vendored
Normal file
8
.github/ISSUE_TEMPLATE/custom.md
vendored
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
name: Custom
|
||||||
|
about: 'Anything else: questions, discussions, thanks, ascii-arts, ...'
|
||||||
|
title: ''
|
||||||
|
labels: discussion
|
||||||
|
assignees: moul
|
||||||
|
|
||||||
|
---
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: Feature request
|
||||||
|
about: Suggest an idea for this project
|
||||||
|
title: "[IDEA] "
|
||||||
|
labels: enhancement
|
||||||
|
assignees: ''
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Is your feature request related to a problem? Please describe.**
|
||||||
|
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||||
|
|
||||||
|
**Describe the solution you'd like**
|
||||||
|
A clear and concise description of what you want to happen.
|
||||||
|
|
||||||
|
**Describe alternatives you've considered**
|
||||||
|
A clear and concise description of any alternative solutions or features you've considered.
|
||||||
|
|
||||||
|
**Additional context**
|
||||||
|
Add any other context or screenshots about the feature request here.
|
9
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
9
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
<!--
|
||||||
|
Thank you for your contribution to this repo!
|
||||||
|
|
||||||
|
Before submitting a pull request, please check the following:
|
||||||
|
- reference any related issue, PR, link
|
||||||
|
- use the "WIP" title prefix if you need help or more time to finish your PR
|
||||||
|
|
||||||
|
you can remove this markdown comment
|
||||||
|
-->
|
6
.github/renovate.json
vendored
Normal file
6
.github/renovate.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"extends": [
|
||||||
|
"config:base"
|
||||||
|
],
|
||||||
|
"groupName": "all"
|
||||||
|
}
|
13
.github/workflows/release.yml
vendored
Normal file
13
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
name: Semantic Release
|
||||||
|
|
||||||
|
on: push
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
semantic-release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
- uses: codfish/semantic-release-action@v1
|
||||||
|
if: github.ref == 'refs/heads/master'
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
34
.golangci.yml
Normal file
34
.golangci.yml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
run:
|
||||||
|
deadline: 1m
|
||||||
|
tests: false
|
||||||
|
#skip-files:
|
||||||
|
# - ".*\\.gen\\.go"
|
||||||
|
|
||||||
|
linters-settings:
|
||||||
|
golint:
|
||||||
|
min-confidence: 0
|
||||||
|
maligned:
|
||||||
|
suggest-new: true
|
||||||
|
goconst:
|
||||||
|
min-len: 5
|
||||||
|
min-occurrences: 4
|
||||||
|
misspell:
|
||||||
|
locale: US
|
||||||
|
|
||||||
|
linters:
|
||||||
|
disable-all: true
|
||||||
|
enable:
|
||||||
|
- goconst
|
||||||
|
- misspell
|
||||||
|
- deadcode
|
||||||
|
- misspell
|
||||||
|
- structcheck
|
||||||
|
- errcheck
|
||||||
|
- unused
|
||||||
|
- varcheck
|
||||||
|
- staticcheck
|
||||||
|
- unconvert
|
||||||
|
- gofmt
|
||||||
|
- goimports
|
||||||
|
- golint
|
||||||
|
- ineffassign
|
8
.releaserc.js
Normal file
8
.releaserc.js
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
module.exports = {
|
||||||
|
branch: 'master',
|
||||||
|
plugins: [
|
||||||
|
'@semantic-release/commit-analyzer',
|
||||||
|
'@semantic-release/release-notes-generator',
|
||||||
|
'@semantic-release/github',
|
||||||
|
],
|
||||||
|
};
|
@@ -3,15 +3,14 @@ go: 1.11.x
|
|||||||
go_import_path: moul.io/protoc-gen-gotemplate
|
go_import_path: moul.io/protoc-gen-gotemplate
|
||||||
install:
|
install:
|
||||||
- go get github.com/Masterminds/glide
|
- go get github.com/Masterminds/glide
|
||||||
- wget https://raw.githubusercontent.com/grpc-ecosystem/grpc-gateway/master/.travis/install-protoc.sh && chmod +x install-protoc.sh && ./install-protoc.sh 3.4.0
|
- wget https://raw.githubusercontent.com/grpc-ecosystem/grpc-gateway/v1.5.0/.travis/install-protoc.sh && chmod +x install-protoc.sh && ./install-protoc.sh 3.4.0
|
||||||
- go get -u github.com/golang/protobuf/protoc-gen-go
|
- go get -u github.com/golang/protobuf/protoc-gen-go
|
||||||
- go get github.com/securego/gosec/cmd/gosec/...
|
- go get github.com/securego/gosec/cmd/gosec/...
|
||||||
- go get -u github.com/alecthomas/gometalinter
|
- curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s v1.12.2
|
||||||
- gometalinter --install
|
|
||||||
script:
|
script:
|
||||||
- make install
|
- make install
|
||||||
- make test
|
- make test
|
||||||
- make lint
|
- PATH=$PATH:$(pwd)/bin make lint
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- $HOME/local
|
- $HOME/local
|
||||||
|
2
Makefile
2
Makefile
@@ -33,4 +33,4 @@ docker.push: docker.build
|
|||||||
|
|
||||||
.PHONY: lint
|
.PHONY: lint
|
||||||
lint:
|
lint:
|
||||||
gometalinter --disable-all --enable=errcheck --enable=vet --enable=vetshadow --enable=golint --enable=gosec --enable=ineffassign --enable=goconst --enable=goimports --enable=gofmt --exclude="Binds to all network interfaces" --exclude="should have comment" --enable=staticcheck --enable=gosimple --enable=misspell --deadline=120s . ./cmd/... ./helpers/...
|
golangci-lint run --verbose . ./helpers ./cmd/...
|
||||||
|
97
README.md
97
README.md
@@ -76,56 +76,57 @@ This project uses [Masterminds/sprig](https://github.com/Masterminds/sprig) libr
|
|||||||
Non-exhaustive list of new helpers:
|
Non-exhaustive list of new helpers:
|
||||||
|
|
||||||
* **all the functions from [sprig](https://github.com/Masterminds/sprig)**
|
* **all the functions from [sprig](https://github.com/Masterminds/sprig)**
|
||||||
* `string`
|
* `add`
|
||||||
* `json`
|
|
||||||
* `prettyjson`
|
|
||||||
* `splitArray`
|
|
||||||
* `first`
|
|
||||||
* `last`
|
|
||||||
* `upperFirst`
|
|
||||||
* `lowerFirst`
|
|
||||||
* `camelCase`
|
|
||||||
* `lowerCamelCase`
|
|
||||||
* `kebabCase`
|
|
||||||
* `contains`
|
|
||||||
* `trimstr`
|
|
||||||
* `index`
|
|
||||||
* `snakeCase`
|
|
||||||
* `getProtoFile`
|
|
||||||
* `getMessageType`
|
|
||||||
* `getEnumValue`
|
|
||||||
* `isFieldMessage`
|
|
||||||
* `isFieldMessageTimeStamp`
|
|
||||||
* `isFieldRepeated`
|
|
||||||
* `haskellType`
|
|
||||||
* `goType`
|
|
||||||
* `goZeroValue`
|
|
||||||
* `goTypeWithPackage`
|
|
||||||
* `jsType`
|
|
||||||
* `jsSuffixReserved`
|
|
||||||
* `namespacedFlowType`
|
|
||||||
* `httpVerb`
|
|
||||||
* `httpPath`
|
|
||||||
* `httpPathsAdditionalBindings`
|
|
||||||
* `httpBody`
|
|
||||||
* `shortType`
|
|
||||||
* `urlHasVarsFromMessage`
|
|
||||||
* `lowerGoNormalize`
|
|
||||||
* `goNormalize`
|
|
||||||
* `leadingComment`
|
|
||||||
* `trailingComment`
|
|
||||||
* `leadingDetachedComments`
|
|
||||||
* `stringFieldExtension`
|
|
||||||
* `stringMethodOptionsExtension`
|
|
||||||
* `boolFieldExtension`
|
* `boolFieldExtension`
|
||||||
* `isFieldMap`
|
* `camelCase`
|
||||||
|
* `contains`
|
||||||
|
* `divide`
|
||||||
* `fieldMapKeyType`
|
* `fieldMapKeyType`
|
||||||
* `fieldMapValueType`
|
* `fieldMapValueType`
|
||||||
* `replaceDict`
|
* `first`
|
||||||
* `add`
|
* `getEnumValue`
|
||||||
* `subtract`
|
* `getMessageType`
|
||||||
|
* `getProtoFile`
|
||||||
|
* `goNormalize`
|
||||||
|
* `goTypeWithPackage`
|
||||||
|
* `goType`
|
||||||
|
* `goZeroValue`
|
||||||
|
* `haskellType`
|
||||||
|
* `httpBody`
|
||||||
|
* `httpPath`
|
||||||
|
* `httpPathsAdditionalBindings`
|
||||||
|
* `httpVerb`
|
||||||
|
* `index`
|
||||||
|
* `int64FieldExtension`
|
||||||
|
* `isFieldMap`
|
||||||
|
* `isFieldMessageTimeStamp`
|
||||||
|
* `isFieldMessage`
|
||||||
|
* `isFieldRepeated`
|
||||||
|
* `jsSuffixReserved`
|
||||||
|
* `jsType`
|
||||||
|
* `json`
|
||||||
|
* `kebabCase`
|
||||||
|
* `last`
|
||||||
|
* `leadingComment`
|
||||||
|
* `leadingDetachedComments`
|
||||||
|
* `lowerCamelCase`
|
||||||
|
* `lowerFirst`
|
||||||
|
* `lowerGoNormalize`
|
||||||
* `multiply`
|
* `multiply`
|
||||||
* `divide`
|
* `namespacedFlowType`
|
||||||
|
* `prettyjson`
|
||||||
|
* `replaceDict`
|
||||||
|
* `shortType`
|
||||||
|
* `snakeCase`
|
||||||
|
* `splitArray`
|
||||||
|
* `stringFieldExtension`
|
||||||
|
* `stringMethodOptionsExtension`
|
||||||
|
* `string`
|
||||||
|
* `subtract`
|
||||||
|
* `trailingComment`
|
||||||
|
* `trimstr`
|
||||||
|
* `upperFirst`
|
||||||
|
* `urlHasVarsFromMessage`
|
||||||
|
|
||||||
See the project helpers for the complete list.
|
See the project helpers for the complete list.
|
||||||
|
|
||||||
@@ -152,6 +153,10 @@ $> docker run --rm -v "$(pwd):$(pwd)" -w "$(pwd)" moul/protoc-gen-gotemplate -I.
|
|||||||
* [translator](https://github.com/moul/translator): Translator Micro-service using Gettext and Go-Kit
|
* [translator](https://github.com/moul/translator): Translator Micro-service using Gettext and Go-Kit
|
||||||
* [acl](https://github.com/moul/acl): ACL micro-service (gRPC/protobuf + http/json)
|
* [acl](https://github.com/moul/acl): ACL micro-service (gRPC/protobuf + http/json)
|
||||||
|
|
||||||
|
## See also
|
||||||
|
|
||||||
|
* [pbhbs](https://github.com/gponsinet/pbhbs): protobuf gen based on handlebarjs template
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
MIT
|
MIT
|
||||||
|
6
assets/assets
Normal file
6
assets/assets
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
/Users/moul/go/src/moul.io/protoc-gen-gotemplate/assets:
|
||||||
|
total used in directory 552 available 9223372036849978910
|
||||||
|
drwxr-xr-x 4 moul staff 128 Dec 9 11:31 .
|
||||||
|
lrwxr-xr-x 1 moul staff 33 Dec 9 11:31 .#web-editor.jpg -> moul@manfred-spacegray.local.9471
|
||||||
|
drwxr-xr-x 21 moul staff 672 Sep 13 18:05 ..
|
||||||
|
-rw-r--r--@ 1 moul staff 280357 Oct 26 2017 web-editor.jpg
|
@@ -11,7 +11,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/golang/protobuf/protoc-gen-go/descriptor"
|
"github.com/golang/protobuf/protoc-gen-go/descriptor"
|
||||||
"github.com/golang/protobuf/protoc-gen-go/plugin"
|
plugin_go "github.com/golang/protobuf/protoc-gen-go/plugin"
|
||||||
|
|
||||||
pgghelpers "moul.io/protoc-gen-gotemplate/helpers"
|
pgghelpers "moul.io/protoc-gen-gotemplate/helpers"
|
||||||
)
|
)
|
||||||
@@ -210,10 +210,8 @@ func (e *GenericTemplateBasedEncoder) Files() []*plugin_go.CodeGeneratorResponse
|
|||||||
case f := <-resultChan:
|
case f := <-resultChan:
|
||||||
files = append(files, f)
|
files = append(files, f)
|
||||||
case err = <-errChan:
|
case err = <-errChan:
|
||||||
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return files
|
return files
|
||||||
}
|
}
|
||||||
|
@@ -5,8 +5,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/go-kit/kit/endpoint"
|
"github.com/go-kit/kit/endpoint"
|
||||||
pb "moul.io/protoc-gen-gotemplate/examples/go-kit/services/session/gen/pb"
|
|
||||||
oldcontext "golang.org/x/net/context"
|
oldcontext "golang.org/x/net/context"
|
||||||
|
pb "moul.io/protoc-gen-gotemplate/examples/go-kit/services/session/gen/pb"
|
||||||
)
|
)
|
||||||
|
|
||||||
var _ = endpoint.Chain
|
var _ = endpoint.Chain
|
||||||
|
@@ -5,8 +5,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/go-kit/kit/endpoint"
|
"github.com/go-kit/kit/endpoint"
|
||||||
pb "moul.io/protoc-gen-gotemplate/examples/go-kit/services/sprint/gen/pb"
|
|
||||||
oldcontext "golang.org/x/net/context"
|
oldcontext "golang.org/x/net/context"
|
||||||
|
pb "moul.io/protoc-gen-gotemplate/examples/go-kit/services/sprint/gen/pb"
|
||||||
)
|
)
|
||||||
|
|
||||||
var _ = endpoint.Chain
|
var _ = endpoint.Chain
|
||||||
|
@@ -5,8 +5,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/go-kit/kit/endpoint"
|
"github.com/go-kit/kit/endpoint"
|
||||||
pb "moul.io/protoc-gen-gotemplate/examples/go-kit/services/user/gen/pb"
|
|
||||||
oldcontext "golang.org/x/net/context"
|
oldcontext "golang.org/x/net/context"
|
||||||
|
pb "moul.io/protoc-gen-gotemplate/examples/go-kit/services/user/gen/pb"
|
||||||
)
|
)
|
||||||
|
|
||||||
var _ = endpoint.Chain
|
var _ = endpoint.Chain
|
||||||
|
@@ -2,39 +2,25 @@
|
|||||||
package company
|
package company
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
"moul.io/protoc-gen-gotemplate/examples/import/output/models/article"
|
"moul.io/protoc-gen-gotemplate/examples/import/output/models/article"
|
||||||
"moul.io/protoc-gen-gotemplate/examples/import/output/models/common"
|
"moul.io/protoc-gen-gotemplate/examples/import/output/models/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Repository interface {
|
type Repository interface {
|
||||||
GetArticle(getarticle *common.GetArticle ) (*company.Article, []*company.Storage, error)
|
GetArticle(getarticle *common.GetArticle) (*company.Article, []*company.Storage, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ------------------------- Public SDK -----------------------------
|
// ------------------------- Public SDK -----------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// GetArticle : proto: missing extension proto: missing extension
|
// GetArticle : proto: missing extension proto: missing extension
|
||||||
func (sdk *Sdk) GetArticle(ctx context.Context,
|
func (sdk *Sdk) GetArticle(ctx context.Context,
|
||||||
getarticle *article.GetArticle, token, requestID string)(article *article.Article, storages []*article.GetArticleResponse_Storage, err error) {
|
getarticle *article.GetArticle, token, requestID string) (article *article.Article, storages []*article.GetArticleResponse_Storage, err error) {
|
||||||
|
|
||||||
out := &pb.GetArticleResponse{}
|
out := &pb.GetArticleResponse{}
|
||||||
_ = out
|
_ = out
|
||||||
|
|
||||||
|
return out.Article, out.Storages, nil
|
||||||
|
|
||||||
return out.Article, out.Storages, nil
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -4,8 +4,8 @@ package bbb
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"moul.io/protoc-gen-gotemplate/examples/single-package-mode/output/aaa"
|
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
|
"moul.io/protoc-gen-gotemplate/examples/single-package-mode/output/aaa"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Service struct{}
|
type Service struct{}
|
||||||
|
@@ -2,9 +2,9 @@
|
|||||||
package foo
|
package foo
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/golang/protobuf/ptypes/timestamp"
|
"github.com/golang/protobuf/ptypes/timestamp"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Repository interface {
|
type Repository interface {
|
||||||
GetFoo(timestamp *timestamp.Timestamp ) (*timestamp.Timestamp, error)
|
GetFoo(timestamp *timestamp.Timestamp) (*timestamp.Timestamp, error)
|
||||||
}
|
}
|
||||||
|
12
go.mod
12
go.mod
@@ -4,10 +4,6 @@ require (
|
|||||||
github.com/Masterminds/semver v1.2.2 // indirect
|
github.com/Masterminds/semver v1.2.2 // indirect
|
||||||
github.com/Masterminds/sprig v2.14.1+incompatible
|
github.com/Masterminds/sprig v2.14.1+incompatible
|
||||||
github.com/aokoli/goutils v0.0.0-20170502144750-e57d01ace047 // indirect
|
github.com/aokoli/goutils v0.0.0-20170502144750-e57d01ace047 // indirect
|
||||||
github.com/dgrijalva/jwt-go v0.0.0-20160621201154-c9eaceb2896d // indirect
|
|
||||||
github.com/go-kit/kit v0.0.0-20161109000648-9f5c614cd1e7 // indirect
|
|
||||||
github.com/go-logfmt/logfmt v0.3.0 // indirect
|
|
||||||
github.com/go-stack/stack v1.5.3 // indirect
|
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect
|
||||||
github.com/golang/protobuf v0.0.0-20161117033126-8ee79997227b
|
github.com/golang/protobuf v0.0.0-20161117033126-8ee79997227b
|
||||||
github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f // indirect
|
github.com/gorilla/context v0.0.0-20160226214623-1ea25387ff6f // indirect
|
||||||
@@ -16,12 +12,10 @@ require (
|
|||||||
github.com/grpc-ecosystem/grpc-gateway v1.2.2
|
github.com/grpc-ecosystem/grpc-gateway v1.2.2
|
||||||
github.com/huandu/xstrings v0.0.0-20151130125119-3959339b3335
|
github.com/huandu/xstrings v0.0.0-20151130125119-3959339b3335
|
||||||
github.com/imdario/mergo v0.0.0-20171009183408-7fe0c75c13ab // indirect
|
github.com/imdario/mergo v0.0.0-20171009183408-7fe0c75c13ab // indirect
|
||||||
github.com/kr/fs v0.0.0-20131111012553-2788f0dbd169 // indirect
|
|
||||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 // indirect
|
|
||||||
github.com/satori/go.uuid v1.1.0 // indirect
|
github.com/satori/go.uuid v1.1.0 // indirect
|
||||||
|
github.com/stretchr/testify v1.3.0 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20170516161655-0fe963104e9d // indirect
|
golang.org/x/crypto v0.0.0-20170516161655-0fe963104e9d // indirect
|
||||||
golang.org/x/net v0.0.0-20170108160505-da2b4fa28524 // indirect
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 // indirect
|
||||||
golang.org/x/text v0.0.0-20161216064924-a49bea13b776 // indirect
|
|
||||||
google.golang.org/genproto v0.0.0-20170517234824-bb3573be0c48
|
google.golang.org/genproto v0.0.0-20170517234824-bb3573be0c48
|
||||||
google.golang.org/grpc v1.0.4 // indirect
|
gopkg.in/yaml.v2 v2.2.2 // indirect
|
||||||
)
|
)
|
||||||
|
22
go.sum
22
go.sum
@@ -4,10 +4,8 @@ github.com/Masterminds/sprig v2.14.1+incompatible h1:rTHERm50Xp1Cbb8x7xBCeDp//jM
|
|||||||
github.com/Masterminds/sprig v2.14.1+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
|
github.com/Masterminds/sprig v2.14.1+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o=
|
||||||
github.com/aokoli/goutils v0.0.0-20170502144750-e57d01ace047 h1:Bn0iqJ/349f606hR0juIGyheAI6+hyg9XUOLhN9udLo=
|
github.com/aokoli/goutils v0.0.0-20170502144750-e57d01ace047 h1:Bn0iqJ/349f606hR0juIGyheAI6+hyg9XUOLhN9udLo=
|
||||||
github.com/aokoli/goutils v0.0.0-20170502144750-e57d01ace047/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ=
|
github.com/aokoli/goutils v0.0.0-20170502144750-e57d01ace047/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ=
|
||||||
github.com/dgrijalva/jwt-go v0.0.0-20160621201154-c9eaceb2896d/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
github.com/go-kit/kit v0.0.0-20161109000648-9f5c614cd1e7/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
|
|
||||||
github.com/go-stack/stack v1.5.3/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
github.com/golang/protobuf v0.0.0-20161117033126-8ee79997227b h1:fE/yi9pibxGEc0gSJuEShcsBXE2d5FW3OudsjE9tKzQ=
|
github.com/golang/protobuf v0.0.0-20161117033126-8ee79997227b h1:fE/yi9pibxGEc0gSJuEShcsBXE2d5FW3OudsjE9tKzQ=
|
||||||
@@ -24,14 +22,20 @@ github.com/huandu/xstrings v0.0.0-20151130125119-3959339b3335 h1:KZOP9q7J/P4eMBi
|
|||||||
github.com/huandu/xstrings v0.0.0-20151130125119-3959339b3335/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo=
|
github.com/huandu/xstrings v0.0.0-20151130125119-3959339b3335/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo=
|
||||||
github.com/imdario/mergo v0.0.0-20171009183408-7fe0c75c13ab h1:k/Biv+LJL35wkk0Hveko1nj7as4tSHkHdZaNlzn/gcQ=
|
github.com/imdario/mergo v0.0.0-20171009183408-7fe0c75c13ab h1:k/Biv+LJL35wkk0Hveko1nj7as4tSHkHdZaNlzn/gcQ=
|
||||||
github.com/imdario/mergo v0.0.0-20171009183408-7fe0c75c13ab/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
github.com/imdario/mergo v0.0.0-20171009183408-7fe0c75c13ab/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||||
github.com/kr/fs v0.0.0-20131111012553-2788f0dbd169/go.mod h1:glhvuHOU9Hy7/8PwwdtnarXqLagOX0b/TbZx2zLMqEg=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/satori/go.uuid v1.1.0 h1:B9KXyj+GzIpJbV7gmr873NsY6zpbxNy24CBtGrk7jHo=
|
github.com/satori/go.uuid v1.1.0 h1:B9KXyj+GzIpJbV7gmr873NsY6zpbxNy24CBtGrk7jHo=
|
||||||
github.com/satori/go.uuid v1.1.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
github.com/satori/go.uuid v1.1.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
|
||||||
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
golang.org/x/crypto v0.0.0-20170516161655-0fe963104e9d h1:qjfFh1YMn6m60QTGoG+IlwUMhNlXJbDyCa6EkHM/N2w=
|
golang.org/x/crypto v0.0.0-20170516161655-0fe963104e9d h1:qjfFh1YMn6m60QTGoG+IlwUMhNlXJbDyCa6EkHM/N2w=
|
||||||
golang.org/x/crypto v0.0.0-20170516161655-0fe963104e9d/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
golang.org/x/crypto v0.0.0-20170516161655-0fe963104e9d/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
golang.org/x/net v0.0.0-20170108160505-da2b4fa28524/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw=
|
||||||
golang.org/x/text v0.0.0-20161216064924-a49bea13b776/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
google.golang.org/genproto v0.0.0-20170517234824-bb3573be0c48 h1:xfoW+Di7qQQUnjptcGb4/rpc701e3RvfNmaywfMxQVI=
|
google.golang.org/genproto v0.0.0-20170517234824-bb3573be0c48 h1:xfoW+Di7qQQUnjptcGb4/rpc701e3RvfNmaywfMxQVI=
|
||||||
google.golang.org/genproto v0.0.0-20170517234824-bb3573be0c48/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
google.golang.org/genproto v0.0.0-20170517234824-bb3573be0c48/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
google.golang.org/grpc v1.0.4/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
@@ -94,15 +94,15 @@ var ProtoHelpersFuncMap = template.FuncMap{
|
|||||||
"trimstr": func(cutset, s string) string {
|
"trimstr": func(cutset, s string) string {
|
||||||
return strings.Trim(s, cutset)
|
return strings.Trim(s, cutset)
|
||||||
},
|
},
|
||||||
"index": func(array interface{}, i int32) interface{} {
|
"index": func(array interface{}, i int) interface{} {
|
||||||
slice := reflect.ValueOf(array)
|
slice := reflect.ValueOf(array)
|
||||||
if slice.Kind() != reflect.Slice {
|
if slice.Kind() != reflect.Slice {
|
||||||
panic("Error in index(): given a non-slice type")
|
panic("Error in index(): given a non-slice type")
|
||||||
}
|
}
|
||||||
if i < 0 || int(i) >= slice.Len() {
|
if i < 0 || i >= slice.Len() {
|
||||||
panic("Error in index(): index out of bounds")
|
panic("Error in index(): index out of bounds")
|
||||||
}
|
}
|
||||||
return slice.Index(int(i)).Interface()
|
return slice.Index(i).Interface()
|
||||||
},
|
},
|
||||||
"add": func(a int, b int) int {
|
"add": func(a int, b int) int {
|
||||||
return a + b
|
return a + b
|
||||||
@@ -146,9 +146,14 @@ var ProtoHelpersFuncMap = template.FuncMap{
|
|||||||
"leadingComment": leadingComment,
|
"leadingComment": leadingComment,
|
||||||
"trailingComment": trailingComment,
|
"trailingComment": trailingComment,
|
||||||
"leadingDetachedComments": leadingDetachedComments,
|
"leadingDetachedComments": leadingDetachedComments,
|
||||||
|
"stringFileOptionsExtension": stringFileOptionsExtension,
|
||||||
|
"stringMessageExtension": stringMessageExtension,
|
||||||
"stringFieldExtension": stringFieldExtension,
|
"stringFieldExtension": stringFieldExtension,
|
||||||
|
"int64FieldExtension": int64FieldExtension,
|
||||||
|
"int64MessageExtension": int64MessageExtension,
|
||||||
"stringMethodOptionsExtension": stringMethodOptionsExtension,
|
"stringMethodOptionsExtension": stringMethodOptionsExtension,
|
||||||
"boolMethodOptionsExtension": boolMethodOptionsExtension,
|
"boolMethodOptionsExtension": boolMethodOptionsExtension,
|
||||||
|
"boolMessageExtension": boolMessageExtension,
|
||||||
"boolFieldExtension": boolFieldExtension,
|
"boolFieldExtension": boolFieldExtension,
|
||||||
"isFieldMap": isFieldMap,
|
"isFieldMap": isFieldMap,
|
||||||
"fieldMapKeyType": fieldMapKeyType,
|
"fieldMapKeyType": fieldMapKeyType,
|
||||||
@@ -156,6 +161,8 @@ var ProtoHelpersFuncMap = template.FuncMap{
|
|||||||
"replaceDict": replaceDict,
|
"replaceDict": replaceDict,
|
||||||
"setStore": setStore,
|
"setStore": setStore,
|
||||||
"getStore": getStore,
|
"getStore": getStore,
|
||||||
|
"goPkg": goPkg,
|
||||||
|
"goPkgLastElement": goPkgLastElement,
|
||||||
}
|
}
|
||||||
|
|
||||||
var pathMap map[interface{}]*descriptor.SourceCodeInfo_Location
|
var pathMap map[interface{}]*descriptor.SourceCodeInfo_Location
|
||||||
@@ -282,12 +289,12 @@ func samePath(a, b []int32) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func findSourceInfoLocation(i interface{}) *descriptor.SourceCodeInfo_Location {
|
/*func findSourceInfoLocation(i interface{}) *descriptor.SourceCodeInfo_Location {
|
||||||
if pathMap == nil {
|
if pathMap == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return pathMap[i]
|
return pathMap[i]
|
||||||
}
|
}*/
|
||||||
|
|
||||||
func leadingComment(i interface{}) string {
|
func leadingComment(i interface{}) string {
|
||||||
loc := pathMap[i]
|
loc := pathMap[i]
|
||||||
@@ -342,6 +349,46 @@ func stringMethodOptionsExtension(fieldID int32, f *descriptor.MethodDescriptorP
|
|||||||
return *str
|
return *str
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// stringFileOptionsExtension extracts file options of a string type.
|
||||||
|
// To define your own extensions see:
|
||||||
|
// https://developers.google.com/protocol-buffers/docs/proto#customoptions
|
||||||
|
// Typically the fieldID of private extensions should be in the range:
|
||||||
|
// 50000-99999
|
||||||
|
func stringFileOptionsExtension(fieldID int32, f *descriptor.FileDescriptorProto) string {
|
||||||
|
if f == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if f.Options == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
var extendedType *descriptor.FileOptions
|
||||||
|
var extensionType *string
|
||||||
|
|
||||||
|
eds := proto.RegisteredExtensions(f.Options)
|
||||||
|
if eds[fieldID] == nil {
|
||||||
|
ed := &proto.ExtensionDesc{
|
||||||
|
ExtendedType: extendedType,
|
||||||
|
ExtensionType: extensionType,
|
||||||
|
Field: fieldID,
|
||||||
|
Tag: fmt.Sprintf("bytes,%d", fieldID),
|
||||||
|
}
|
||||||
|
proto.RegisterExtension(ed)
|
||||||
|
eds = proto.RegisteredExtensions(f.Options)
|
||||||
|
}
|
||||||
|
|
||||||
|
ext, err := proto.GetExtension(f.Options, eds[fieldID])
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
str, ok := ext.(*string)
|
||||||
|
if !ok {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return *str
|
||||||
|
}
|
||||||
|
|
||||||
func stringFieldExtension(fieldID int32, f *descriptor.FieldDescriptorProto) string {
|
func stringFieldExtension(fieldID int32, f *descriptor.FieldDescriptorProto) string {
|
||||||
if f == nil {
|
if f == nil {
|
||||||
return ""
|
return ""
|
||||||
@@ -377,6 +424,111 @@ func stringFieldExtension(fieldID int32, f *descriptor.FieldDescriptorProto) str
|
|||||||
return *str
|
return *str
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func int64FieldExtension(fieldID int32, f *descriptor.FieldDescriptorProto) int64 {
|
||||||
|
if f == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
if f.Options == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
var extendedType *descriptor.FieldOptions
|
||||||
|
var extensionType *int64
|
||||||
|
|
||||||
|
eds := proto.RegisteredExtensions(f.Options)
|
||||||
|
if eds[fieldID] == nil {
|
||||||
|
ed := &proto.ExtensionDesc{
|
||||||
|
ExtendedType: extendedType,
|
||||||
|
ExtensionType: extensionType,
|
||||||
|
Field: fieldID,
|
||||||
|
Tag: fmt.Sprintf("varint,%d", fieldID),
|
||||||
|
}
|
||||||
|
proto.RegisterExtension(ed)
|
||||||
|
eds = proto.RegisteredExtensions(f.Options)
|
||||||
|
}
|
||||||
|
|
||||||
|
ext, err := proto.GetExtension(f.Options, eds[fieldID])
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
i, ok := ext.(*int64)
|
||||||
|
if !ok {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
return *i
|
||||||
|
}
|
||||||
|
|
||||||
|
func int64MessageExtension(fieldID int32, f *descriptor.DescriptorProto) int64 {
|
||||||
|
if f == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
if f.Options == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
var extendedType *descriptor.MessageOptions
|
||||||
|
var extensionType *int64
|
||||||
|
|
||||||
|
eds := proto.RegisteredExtensions(f.Options)
|
||||||
|
if eds[fieldID] == nil {
|
||||||
|
ed := &proto.ExtensionDesc{
|
||||||
|
ExtendedType: extendedType,
|
||||||
|
ExtensionType: extensionType,
|
||||||
|
Field: fieldID,
|
||||||
|
Tag: fmt.Sprintf("varint,%d", fieldID),
|
||||||
|
}
|
||||||
|
proto.RegisterExtension(ed)
|
||||||
|
eds = proto.RegisteredExtensions(f.Options)
|
||||||
|
}
|
||||||
|
|
||||||
|
ext, err := proto.GetExtension(f.Options, eds[fieldID])
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
i, ok := ext.(*int64)
|
||||||
|
if !ok {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
return *i
|
||||||
|
}
|
||||||
|
|
||||||
|
func stringMessageExtension(fieldID int32, f *descriptor.DescriptorProto) string {
|
||||||
|
if f == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if f.Options == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
var extendedType *descriptor.MessageOptions
|
||||||
|
var extensionType *string
|
||||||
|
|
||||||
|
eds := proto.RegisteredExtensions(f.Options)
|
||||||
|
if eds[fieldID] == nil {
|
||||||
|
ed := &proto.ExtensionDesc{
|
||||||
|
ExtendedType: extendedType,
|
||||||
|
ExtensionType: extensionType,
|
||||||
|
Field: fieldID,
|
||||||
|
Tag: fmt.Sprintf("bytes,%d", fieldID),
|
||||||
|
}
|
||||||
|
proto.RegisterExtension(ed)
|
||||||
|
eds = proto.RegisteredExtensions(f.Options)
|
||||||
|
}
|
||||||
|
|
||||||
|
ext, err := proto.GetExtension(f.Options, eds[fieldID])
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
str, ok := ext.(*string)
|
||||||
|
if !ok {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return *str
|
||||||
|
}
|
||||||
|
|
||||||
func boolMethodOptionsExtension(fieldID int32, f *descriptor.MethodDescriptorProto) bool {
|
func boolMethodOptionsExtension(fieldID int32, f *descriptor.MethodDescriptorProto) bool {
|
||||||
if f == nil {
|
if f == nil {
|
||||||
return false
|
return false
|
||||||
@@ -393,7 +545,7 @@ func boolMethodOptionsExtension(fieldID int32, f *descriptor.MethodDescriptorPro
|
|||||||
ExtendedType: extendedType,
|
ExtendedType: extendedType,
|
||||||
ExtensionType: extensionType,
|
ExtensionType: extensionType,
|
||||||
Field: fieldID,
|
Field: fieldID,
|
||||||
Tag: fmt.Sprintf("bytes,%d", fieldID),
|
Tag: fmt.Sprintf("varint,%d", fieldID),
|
||||||
}
|
}
|
||||||
proto.RegisterExtension(ed)
|
proto.RegisterExtension(ed)
|
||||||
eds = proto.RegisteredExtensions(f.Options)
|
eds = proto.RegisteredExtensions(f.Options)
|
||||||
@@ -447,6 +599,41 @@ func boolFieldExtension(fieldID int32, f *descriptor.FieldDescriptorProto) bool
|
|||||||
return *b
|
return *b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func boolMessageExtension(fieldID int32, f *descriptor.DescriptorProto) bool {
|
||||||
|
if f == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if f.Options == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
var extendedType *descriptor.MessageOptions
|
||||||
|
var extensionType *bool
|
||||||
|
|
||||||
|
eds := proto.RegisteredExtensions(f.Options)
|
||||||
|
if eds[fieldID] == nil {
|
||||||
|
ed := &proto.ExtensionDesc{
|
||||||
|
ExtendedType: extendedType,
|
||||||
|
ExtensionType: extensionType,
|
||||||
|
Field: fieldID,
|
||||||
|
Tag: fmt.Sprintf("varint,%d", fieldID),
|
||||||
|
}
|
||||||
|
proto.RegisterExtension(ed)
|
||||||
|
eds = proto.RegisteredExtensions(f.Options)
|
||||||
|
}
|
||||||
|
|
||||||
|
ext, err := proto.GetExtension(f.Options, eds[fieldID])
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
b, ok := ext.(*bool)
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return *b
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
for k, v := range sprig.TxtFuncMap() {
|
for k, v := range sprig.TxtFuncMap() {
|
||||||
ProtoHelpersFuncMap[k] = v
|
ProtoHelpersFuncMap[k] = v
|
||||||
@@ -1128,3 +1315,13 @@ func replaceDict(src string, dict map[string]interface{}) string {
|
|||||||
}
|
}
|
||||||
return src
|
return src
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func goPkg(f *descriptor.FileDescriptorProto) string {
|
||||||
|
return f.Options.GetGoPackage()
|
||||||
|
}
|
||||||
|
|
||||||
|
func goPkgLastElement(f *descriptor.FileDescriptorProto) string {
|
||||||
|
pkg := goPkg(f)
|
||||||
|
pkgSplitted := strings.Split(pkg, "/")
|
||||||
|
return pkgSplitted[len(pkgSplitted)-1]
|
||||||
|
}
|
||||||
|
22
main.go
22
main.go
@@ -8,7 +8,7 @@ import (
|
|||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
"github.com/golang/protobuf/protoc-gen-go/generator"
|
"github.com/golang/protobuf/protoc-gen-go/generator"
|
||||||
"github.com/golang/protobuf/protoc-gen-go/plugin"
|
plugin_go "github.com/golang/protobuf/protoc-gen-go/plugin"
|
||||||
ggdescriptor "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway/descriptor"
|
ggdescriptor "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway/descriptor"
|
||||||
|
|
||||||
pgghelpers "moul.io/protoc-gen-gotemplate/helpers"
|
pgghelpers "moul.io/protoc-gen-gotemplate/helpers"
|
||||||
@@ -48,6 +48,7 @@ func main() {
|
|||||||
debug = false
|
debug = false
|
||||||
all = false
|
all = false
|
||||||
singlePackageMode = false
|
singlePackageMode = false
|
||||||
|
fileMode = false
|
||||||
)
|
)
|
||||||
if parameter := g.Request.GetParameter(); parameter != "" {
|
if parameter := g.Request.GetParameter(); parameter != "" {
|
||||||
for _, param := range strings.Split(parameter, ",") {
|
for _, param := range strings.Split(parameter, ",") {
|
||||||
@@ -85,6 +86,14 @@ func main() {
|
|||||||
default:
|
default:
|
||||||
log.Printf("Err: invalid value for debug: %q", parts[1])
|
log.Printf("Err: invalid value for debug: %q", parts[1])
|
||||||
}
|
}
|
||||||
|
case "file-mode":
|
||||||
|
switch strings.ToLower(parts[1]) {
|
||||||
|
case boolTrue, "t":
|
||||||
|
fileMode = true
|
||||||
|
case boolFalse, "f":
|
||||||
|
default:
|
||||||
|
log.Printf("Err: invalid value for file-mode: %q", parts[1])
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
log.Printf("Err: unknown parameter: %q", param)
|
log.Printf("Err: unknown parameter: %q", param)
|
||||||
}
|
}
|
||||||
@@ -125,6 +134,17 @@ func main() {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if fileMode {
|
||||||
|
if s := file.GetService(); s != nil && len(s) > 0 {
|
||||||
|
encoder := NewGenericTemplateBasedEncoder(templateDir, file, debug, destinationDir)
|
||||||
|
for _, tmpl := range encoder.Files() {
|
||||||
|
concatOrAppend(tmpl)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
for _, service := range file.GetService() {
|
for _, service := range file.GetService() {
|
||||||
encoder := NewGenericServiceTemplateBasedEncoder(templateDir, service, file, debug, destinationDir)
|
encoder := NewGenericServiceTemplateBasedEncoder(templateDir, service, file, debug, destinationDir)
|
||||||
for _, tmpl := range encoder.Files() {
|
for _, tmpl := range encoder.Files() {
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"extends": [
|
"extends": [
|
||||||
"config:base"
|
"config:base"
|
||||||
]
|
],
|
||||||
|
"groupName": "all"
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user