Civil is a decentralized and censorship resistant ecosystem for online Journalism. Read more in our whitepaper.
This repository contains open-source code for common components used in various Civil projects written in Go.
For Civil's main open-source tools and packages, check out http://github.com/joincivil/Civil.
Civil's ecosystem is free and open-source, we're all part of it and you're encouraged to be a part of it with us. We are looking to evolve this into something the community will find helpful and effortless to use.
If you're itching to dwelve deeper inside, help wanted and good first issue labels are good places to get started and learn the architecture.
This project is using make
to run setup, builds, tests, etc and has been tested and running on go 1.11.1
.
Ensure that your $GOPATH
and $GOROOT
are setup properly in your shell configuration and that this repo is cloned into the appropriate place in the $GOPATH
. i.e. $GOPATH/src/github.com/joincivil/go-common/
To setup the necessary requirements:
make setup
There are a few places where code/artifacts need to be moved or generated before the project can be built, tested, and/or linted. This is likely a place that can be streamlined and improved as time goes on.
The latest generated code is checked into the repository, except for the contract .abi/.bin
. The .abi/.bin
is only needed to generate the Solidity wrappers.
This project relies on artifacts from the main Civil repository http://github.com/joincivil/Civil. NOTE: The .abi/.bin
is pre-generated and included in this repository in /abi
, so this step can normally be skipped.
If re-generation of the .abi/.bin
files is needed, please clone (or have cloned) the Civil repository into a directory accessible by this repository.
To build and copy the Civil contract .abi/.bin files, run the scripts/abi_retrieval.sh
script:
scripts/abi_retrieval.sh /full/path/to/main/civil/repo /full/path/to/go-common/abi
The destination directory is generally the go-common/abi
directory in this repository. This will produce the .abi
& .bin
files from the artifacts in the Civil
repository.
If there are issues with dependencies while running abi_retrieval.sh
, try running the yarn install
in the joincivil/Civil
repo directly before running abi_retrieval.sh
. More information can be found at joincivil/Civil#dev-setup
There are Solidity wrappers that are created by abigen
from the go-ethereum
package. To generate, the .abi
/.bin
files are required in /abi
. The wrappers will go into pkg/generated/contract
directory and are generated by running:
make generate-civil-contracts
Check all the packages for linting errors using a variety of linters via golangci-lint
. Check the Makefile
for the up to date list of linters.
make lint
make build
Runs the tests and checks code coverage across the project. Produces a coverage.txt
file for use later.
make test
Run make test
and launches the HTML code coverage tool.
make cover