Так что у меня следующие файлыПравильный способ генераторных несколько файлов бережливости для Go
/src/baseService.thrift
/baseTypes.thrift
/baseSecurity.thrift
Я хочу, чтобы все эти определения бережливости должны быть созданы в одной библиотеки. В верхней части каждого файла, таким образом:
baseService.thrift
==================
namespace java foo.bar
namespace cpp foo.bar
namespace js foo.bar
namespace go foo.bar
import "baseTypes.thrift"
baseTypes.thrift
================
namespace java foo.bar
namespace cpp foo.bar
namespace js foo.bar
namespace go foo.bar
baseSecurity.thrift
===================
namespace java foo.bar
namespace cpp foo.bar
namespace js foo.bar
namespace go foo.bar
import "baseTypes.thrift"
Проблема в том, как я создаю все их в один пакет Lib? Он отлично работает для java/cpp/js, но когда я пытаюсь построить для go, это не выход.
С бережливостью вы не можете сделать thrift gen:baz *.thrift
, вам нужно делать файлы по одному. Для других языков, мы просто сделать:
for f in `find *.thrift`; do
thrift -o myGenDir --gen go $f"
done
(заменить соответствующую команду для каждого поколения Ланг)
Для Python это хорошо, потому что он помещает каждый gen'd файл в своей собственной директории на основе filename [ie foo/bar/{filename} /ttypes.py]. Для Java он сбрасывает все файлы в foo/bar /, но каждое имя класса уникально. Для cpp он выгружает все это в каталог gen, но уникально назван в файле trift [so {filename.h}, {filename.cpp}]. Для Go, однако, он сбрасывает все в Foo/бар, как так:
/foo/bar/constants.go
/foo/bar/service.go
/foo/bar/service-remote/
/foo/bar/baz/ [for anything that has a namespace of foo.bar.baz]
/foo/bar/ttypes.go
Проблема есть, ttypes.go и (предположительно) constants.go становятся перезаписаны все, что gen'd последний в течение петля. Есть ли способ обойти это? Он работает на других языках - кажется, что это надзор за Go. Что мне не хватает. У нас есть много файлов Thrift с большим количеством материалов в них - я бы предпочел не объединять все, что находится на одном уровне пакета, в один файл экономии.