-
Notifications
You must be signed in to change notification settings - Fork 11
/
Makefile
164 lines (126 loc) · 6.21 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
.PHONY: deps build run lint run-mainnet-online run-mainnet-offline run-testnet-online \
run-testnet-offline check-comments add-license check-license shorten-lines \
spellcheck salus build-local format check-format update-tracer test coverage coverage-local \
update-bootstrap-balances mocks test tests format lint tidy
ADDLICENSE_INSTALL=go install github.com/google/addlicense@latest
ADDLICENSE_CMD=addlicense
ADDLICENCE_SCRIPT=${ADDLICENSE_CMD} -c "Coinbase, Inc." -l "apache" -v
SPELLCHECK_CMD=go run github.com/client9/misspell/cmd/misspell
SPELLCHECK_INSTALL=go mod download github.com/client9/misspell
GOLINES_INSTALL=go install github.com/segmentio/golines@latest
GOLINES_CMD=golines
GOVERALLS_INSTALL=go install github.com/mattn/goveralls@latest
GOVERALLS_CMD=goveralls
GOIMPORTS_INSTALL=go get golang.org/x/tools/cmd/goimports
GOIMPORTS_CMD=go run golang.org/x/tools/cmd/goimports
GO_PACKAGES=./services/... ./cmd/... ./configuration/... ./optimism/...
GO_FOLDERS=$(shell echo ${GO_PACKAGES} | sed -e "s/\.\///g" | sed -e "s/\/\.\.\.//g")
PWD=$(shell pwd)
NOFILE=100000
# This is left as rosetta-ethereum for backwards compatibility
OUTPUT_BIN=rosetta-ethereum
# Linting
LINT_INSTALL=go install github.com/golangci/golangci-lint/cmd/[email protected]
LINT_CMD=golangci-lint run
LINT_SETTINGS=golint,misspell,gocyclo,gocritic,whitespace,gocognit,bodyclose,unconvert,unparam
# Test Scripts
TEST_SCRIPT=go test ${GO_PACKAGES}
all: clean deps tidy format test spellcheck lint
clean:
go clean
tidy:
go mod tidy
deps:
go get ./...
test:
${TEST_SCRIPT}
lint:
${LINT_INSTALL}
golangci-lint run --timeout 2m0s -v -E ${LINT_SETTINGS}
##################################################################################
## GOERLI GOERLI GOERLI GOERLI GOERLI GOERLI GOERLI GOERLI GOERLI GOERLI GOERLI ##
##################################################################################
# Runs rosetta-cli configuration:validate against the optimism goerli configuration
run-optimism-goerli-validate-config:
ROSETTA_CONFIGURATION_FILE=configs/optimism/goerli.json rosetta-cli configuration:validate configs/optimism/goerli.json
# Runs the rosetta-cli check:data command with the optimism goerli configuration
run-optimism-goerli-data-check:
ROSETTA_CONFIGURATION_FILE=configs/optimism/goerli.json rosetta-cli check:data configs/optimism/goerli.json
# Runs the rosetta-cli check:construction command with the optimism goerli configuration
run-optimism-goerli-construction-check:
ROSETTA_CONFIGURATION_FILE=configs/optimism/goerli.json rosetta-cli check:construction configs/optimism/goerli.json
# Runs an instance of `op-rosetta` configured for Optimism Goerli
# For the transition (aka "genesis") block hash, see:
# https://github.com/ethereum-optimism/optimism/blob/5e8bc3d5b4f36f0192b22b032e25b09f23cd0985/op-node/chaincfg/chains.go#L49
run-optimism-goerli:
CHAIN_CONFIG='{ "chainId": 10, "terminalTotalDifficultyPassed": true }' \
MODE=ONLINE \
PORT=8080 \
BLOCKCHAIN=Optimism \
NETWORK=Goerli \
GETH=${OPTIMISM_GOERLI_NODE} \
ENABLE_TRACE_CACHE=true \
ENABLE_GETH_TRACER=true \
TRANSITION_BLOCK_HASH=${OPTIMISM_GOERLI_TRANSITION_BLOCK_HASH} \
${OUTPUT_BIN}
##################################################################################
##################################################################################
build:
go build -v -o optimism-rosetta ./cmd/...
build-docker:
docker build -t rosetta-ethereum:latest https://github.com/inphi/optimism-rosetta.git
build-local:
docker build -t rosetta-ethereum:latest .
build-release:
# make sure to always set version with vX.X.X
docker build -t rosetta-ethereum:$(version) .;
docker save rosetta-ethereum:$(version) | gzip > rosetta-ethereum-$(version).tar.gz;
update-tracer:
curl https://raw.githubusercontent.com/ethereum/go-ethereum/master/eth/tracers/js/internal/tracers/call_tracer_js.js -o optimism/call_tracer.js
update-bootstrap-balances:
go run main.go utils:generate-bootstrap https://storage.googleapis.com/optimism/mainnet/genesis-v0.5.0.json rosetta-cli-conf/mainnet/bootstrap_balances.json;
go run main.go utils:generate-bootstrap https://storage.googleapis.com/optimism/kovan/v0.5.0-rc2.json rosetta-cli-conf/testnet/bootstrap_balances.json;
run-mainnet-online:
docker run -d --rm --ulimit "nofile=${NOFILE}:${NOFILE}" -v "${PWD}/ethereum-data:/data" -e "MODE=ONLINE" -e "NETWORK=MAINNET" -e "PORT=8080" -p 8080:8080 -p 30303:30303 rosetta-ethereum:latest
run-mainnet-offline:
docker run -d --rm -e "MODE=OFFLINE" -e "NETWORK=MAINNET" -e "PORT=8081" -p 8081:8081 rosetta-ethereum:latest
run-testnet-online:
docker run -d --rm --ulimit "nofile=${NOFILE}:${NOFILE}" -v "${PWD}/ethereum-data:/data" -e "MODE=ONLINE" -e "NETWORK=TESTNET" -e "PORT=8080" -p 8080:8080 -p 30303:30303 rosetta-ethereum:latest
run-testnet-offline:
docker run -d --rm -e "MODE=OFFLINE" -e "NETWORK=TESTNET" -e "PORT=8081" -p 8081:8081 rosetta-ethereum:latest
run-mainnet-remote:
docker run -d --rm --ulimit "nofile=${NOFILE}:${NOFILE}" -e "MODE=ONLINE" -e "NETWORK=MAINNET" -e "PORT=8080" -e "GETH=$(geth)" -p 8080:8080 -p 30303:30303 rosetta-ethereum:latest
run-testnet-remote:
docker run -d --rm --ulimit "nofile=${NOFILE}:${NOFILE}" -e "MODE=ONLINE" -e "NETWORK=TESTNET" -e "PORT=8080" -e "GETH=$(geth)" -p 8080:8080 -p 30303:30303 rosetta-ethereum:latest
add-license:
${ADDLICENSE_INSTALL}
${ADDLICENCE_SCRIPT} .
check-license:
${ADDLICENSE_INSTALL}
${ADDLICENCE_SCRIPT} -check .
shorten-lines:
${GOLINES_INSTALL}
${GOLINES_CMD} -w --shorten-comments ${GO_FOLDERS} .
format:
${GOIMPORTS_INSTALL}
gofmt -s -w -l .
${GOIMPORTS_CMD} -w .
check-format:
! gofmt -s -l . | read
! ${GOIMPORTS_CMD} -l . | read
salus:
docker run --rm -t -v ${PWD}:/home/repo coinbase/salus
spellcheck: |
${SPELLCHECK_INSTALL}
${SPELLCHECK_CMD} -error .
coverage:
${GOVERALLS_INSTALL}
if [ "${COVERALLS_TOKEN}" ]; then ${TEST_SCRIPT} -coverprofile=c.out -covermode=count; ${GOVERALLS_CMD} -coverprofile=c.out -repotoken ${COVERALLS_TOKEN}; fi
coverage-local:
${TEST_SCRIPT} -cover
mocks:
rm -rf mocks;
mockery --dir services --all --case underscore --outpkg services --output mocks/services;
mockery --dir optimism --all --case underscore --outpkg optimism --output mocks/optimism;
${ADDLICENSE_INSTALL}
${ADDLICENCE_SCRIPT} .;