Merge pull request #44 from gfanton/feature/concat
Concatenate if file already exist
This commit is contained in:
commit
99cff16e71
13
examples/concat/Makefile
Normal file
13
examples/concat/Makefile
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
.PHONY: build
|
||||||
|
build:
|
||||||
|
mkdir -p output
|
||||||
|
protoc -I. --gotemplate_out=template_dir=templates,debug=true,all=true:output proto/*.proto
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: re
|
||||||
|
re: clean build
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
rm -rf output
|
3
examples/concat/output/concat.txt
Normal file
3
examples/concat/output/concat.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
I'm Eric
|
||||||
|
I'm Francis
|
||||||
|
I'm Arnold
|
1
examples/concat/output/static.txt
Normal file
1
examples/concat/output/static.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
This is static text.This is static text.This is static text.
|
2
examples/concat/proto/Eric.proto
Normal file
2
examples/concat/proto/Eric.proto
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
package Eric;
|
2
examples/concat/proto/Francis.proto
Normal file
2
examples/concat/proto/Francis.proto
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
package Francis;
|
2
examples/concat/proto/arnold.proto
Normal file
2
examples/concat/proto/arnold.proto
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
syntax = "proto3";
|
||||||
|
package Arnold;
|
1
examples/concat/templates/concat.txt.tmpl
Normal file
1
examples/concat/templates/concat.txt.tmpl
Normal file
@ -0,0 +1 @@
|
|||||||
|
I'm {{.File.Package}}
|
1
examples/concat/templates/static.txt.tmpl
Normal file
1
examples/concat/templates/static.txt.tmpl
Normal file
@ -0,0 +1 @@
|
|||||||
|
This is static text.
|
20
main.go
20
main.go
@ -8,6 +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"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@ -71,17 +72,32 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tmplMap := make(map[string]*plugin_go.CodeGeneratorResponse_File)
|
||||||
|
concatOrAppend := func(file *plugin_go.CodeGeneratorResponse_File) {
|
||||||
|
if val, ok := tmplMap[*file.Name]; ok {
|
||||||
|
*val.Content += *file.Content
|
||||||
|
} else {
|
||||||
|
tmplMap[*file.Name] = file
|
||||||
|
g.Response.File = append(g.Response.File, file)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Generate the encoders
|
// Generate the encoders
|
||||||
for _, file := range g.Request.GetProtoFile() {
|
for _, file := range g.Request.GetProtoFile() {
|
||||||
if all {
|
if all {
|
||||||
encoder := NewGenericTemplateBasedEncoder(templateDir, file, debug, destinationDir)
|
encoder := NewGenericTemplateBasedEncoder(templateDir, file, debug, destinationDir)
|
||||||
g.Response.File = append(g.Response.File, encoder.Files()...)
|
for _, tmpl := range encoder.Files() {
|
||||||
|
concatOrAppend(tmpl)
|
||||||
|
}
|
||||||
|
|
||||||
continue
|
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)
|
||||||
g.Response.File = append(g.Response.File, encoder.Files()...)
|
for _, tmpl := range encoder.Files() {
|
||||||
|
concatOrAppend(tmpl)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user