The directory structure used in the keep-common repository is the same as
used on other Keep repositories, and very similar to that used in other Go
projects:
keep-common/
tools/ (1)
generators/ (2)
pkg/ (3)
chain/
chain.go, *.go (4)
ethereum/
gen/
gen.go (5)
relay/
relay.go, *.goKeep tools have categorized directories here, which are typically Go commands that can be used from other repositories.
Code generators in particular live in this subtree.
All additional Go packages live in
pkg/.The high-level interfaces for a package
mypackagelive inmypackage.go. Packages likechainare interface packages that expose a common interface to network and blockchain layers, for example. Their subpackages provide particular implementations of these common interfaces, if these are considered shared implementations..When a package requires generated code, it should have a subpackage named
gen/. This subpackage should contain a single file,gen.go, with a// go:generateannotation to trigger appropriate code generation. All code generation is done with a single invocation ofgo generateat build time.