runs the testfiles/ test
This commit is contained in:
parent
3fe2fde185
commit
99c036733b
7
Makefile
7
Makefile
|
@ -1,7 +1,7 @@
|
|||
VERSION = $(shell git describe --tags)
|
||||
BUILDTIME = $(shell date +%Y.%m.%d_%H%M)
|
||||
|
||||
test: goimports build auto
|
||||
test: goimports build test
|
||||
|
||||
full: clean goimports auto vet install
|
||||
|
||||
|
@ -27,7 +27,10 @@ auto.pb.go: auto.proto
|
|||
./autogenpb --proto auto.proto --package testfiles
|
||||
rm -f auto.sort.pb.go auto.marshal.pb.go
|
||||
|
||||
auto:
|
||||
test:
|
||||
make -C testfiles full
|
||||
|
||||
junk:
|
||||
cd testfiles; rm -f go.* *.pb.go
|
||||
cd testfiles; ../autogenpb --proto auto.proto --package yellow
|
||||
cd testfiles; GO111MODULE=off go vet
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
syntax = "proto3";
|
||||
|
||||
// here are some docs, but probably it's just easier to run
|
||||
// autogenpb on this file and see what gets autogenerated
|
||||
// in this directory. All autogenerated files are named *.pb.go
|
||||
|
||||
// the 'uuid' standard at the end is an experiment
|
||||
// establish a way to identify arbitrary .pb files
|
||||
|
||||
// You can generate Marshal & Unmarshal for any struct (message) you want
|
||||
// You can generate SortBy and Append functions ONLY FOR 'repeated <message>'
|
||||
// Also, those structs must be defined in the same file
|
||||
// Additionally, you must use `autogenpb:mutex` on the parent struct.
|
||||
// The autogenerated code requires a RW mutex and autogenpb will insert it into the struct
|
||||
|
||||
package main;
|
||||
|
||||
message Apple { // `autogenpb:marshal`
|
||||
string name = 1; // `autogenpb:unique` // generates SortByxxx() and AppendUnique() functions
|
||||
string genus = 2; // `autogenpb:unique` // generates same thing here but SortByGenus()
|
||||
}
|
||||
|
||||
message Apples { // `autogenpb:marshal` `autogenpb:mutex`
|
||||
string uuid = 1; // `autogen:default:b2a2de35-07b6-443b-8188-709e27bee8a7`
|
||||
string version = 2; // `autogen:default:2`
|
||||
repeated Apple Apples = 3; // `autogen:sort`
|
||||
repeated Pears More = 4; // `autogen:sort`
|
||||
repeated string Color = 5; // `autogen:sort` `autogen:unique`
|
||||
}
|
||||
|
||||
message Pears {
|
||||
string name = 1; //
|
||||
string favorite = 2; // `autogenpb:sort`
|
||||
}
|
||||
|
||||
// above is an example
|
||||
|
||||
//
|
||||
// below are the actual structs autogen uses
|
||||
// autogen parses the .proto file and then store the information
|
||||
// it needs in these protobuf files, then it processes the
|
||||
// protobuf files to write out *.sort.pb.go and *.marshal.pb.go files
|
||||
//
|
||||
message MsgName {
|
||||
// If you have:
|
||||
//
|
||||
// "Shelf" for msgname
|
||||
// "Books" for name
|
||||
//
|
||||
// Then in the proto file, that would mean it would look like:
|
||||
//
|
||||
// message Shelf {
|
||||
// and then
|
||||
// repeated string Books = 42;
|
||||
//
|
||||
// autogenpb will then generate sort functions for each 'name'
|
||||
// things like:
|
||||
//
|
||||
// for _, b := range all.Book {
|
||||
//
|
||||
// and sort functions like:
|
||||
//
|
||||
// func (a ShelfBook) Less(i, j int) bool { return a[i].Book < a[j].Book }
|
||||
//
|
||||
|
||||
string name = 1; // the name of the message aka struct. for this example: "Shelf"
|
||||
bool marshal = 2; // if "Shelf" should have Marshal & Unmarshal functions
|
||||
bool mutex = 3; // an experiment to insert a mutex into the protoc generated msg struct (bad idea?)
|
||||
repeated string sort = 4; // "Book", "Picture", etc
|
||||
repeated string unique = 5; // if the fields should have AppendUnique() functions
|
||||
}
|
||||
|
||||
message File { // `autogen:nomarshal`
|
||||
string Package = 1; // whatever the package name is at the top of the .go file
|
||||
string filename = 2; // yellow.proto
|
||||
string filebase = 3; // yellow
|
||||
string uuid = 4; // the uuid to use in a func NewMsgName()
|
||||
int64 version = 5; // the version to use in a func NewMsgName()
|
||||
|
||||
// every struct in this proto file, this file has: "Apple", "Apples", ... "File", etc...
|
||||
repeated MsgName msgNames = 6; // `autogen:unique` // in this file
|
||||
}
|
||||
|
||||
// I know, I know, the whole point of using protobuf
|
||||
// is so you don't need a uuid or versions because it's
|
||||
// inherently forward compatable. nonetheless, a simple stubbed out
|
||||
// trivial and empty protobuf message can marshal and identify all the files
|
||||
// also, this could be used to modify /usr/bin/file /usr/share/magic to identify the files
|
||||
// maybe this is already been done and is pointless, but it seems like a good idea
|
||||
message Files { // `autogen:marshal`
|
||||
string uuid = 1; // if you use this scheme, autogen will be able to identify your
|
||||
int64 version = 2; // protobuf files from the command line.
|
||||
repeated File Files = 3; // an array of each .proto file in the working directory
|
||||
}
|
||||
|
||||
// this generic message is used by autogen to identify and
|
||||
// then dump the uuid and version from any arbitrary .pb file
|
||||
message Identify { // `autogen:marshal`
|
||||
string uuid = 1; //
|
||||
int64 version = 2; //
|
||||
}
|
Loading…
Reference in New Issue