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, *.go-
Keep 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.
-
Clone this repo
-
Install go v1.18:
$ brew install [email protected] -
Generate go files:
$ go generate ./…/gen -
Build the project:
$ go build ./… -
Run tests:
$ go test ./…