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
mypackage
live inmypackage.go
. Packages likechain
are 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:generate
annotation to trigger appropriate code generation. All code generation is done with a single invocation ofgo generate
at 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 ./…