Merge pull request #447 from cosmos/bez/440-initial-app-structure

Initial Application Skeleton Structure
This commit is contained in:
Jack Zampolin 2018-07-19 17:44:49 -07:00 committed by GitHub
commit 024325e981
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 149 additions and 16 deletions

26
Gopkg.lock generated
View File

@ -22,9 +22,12 @@
[[projects]]
name = "github.com/cosmos/cosmos-sdk"
packages = [
"baseapp",
"store",
"types",
"wire"
"version",
"wire",
"x/auth"
]
revision = "1a1373cc220e402397ad536aee6b8f5b068914c6"
version = "v0.21.0"
@ -138,6 +141,12 @@
]
revision = "0fb14efe8c47ae851c0034ed7a448854d3d34cf3"
[[projects]]
name = "github.com/inconshreveable/mousetrap"
packages = ["."]
revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75"
version = "v1.0"
[[projects]]
branch = "master"
name = "github.com/jmhodges/levigo"
@ -162,6 +171,18 @@
revision = "ca016a06a5753f8ba03029c0aa5e54afb1bf713f"
version = "v1.4.0"
[[projects]]
name = "github.com/spf13/cobra"
packages = ["."]
revision = "ef82de70bb3f60c65fb8eebacbb2d122ef517385"
version = "v0.0.3"
[[projects]]
name = "github.com/spf13/pflag"
packages = ["."]
revision = "583c0c0531f06d5278b7d917446061adc344b5cd"
version = "v1.0.1"
[[projects]]
branch = "master"
name = "github.com/syndtr/goleveldb"
@ -206,6 +227,7 @@
[[projects]]
name = "github.com/tendermint/tendermint"
packages = [
"abci/server",
"abci/types",
"crypto",
"crypto/merkle",
@ -327,6 +349,6 @@
[solve-meta]
analyzer-name = "dep"
analyzer-version = 1
inputs-digest = "df6cfdfe013b00b662a5b9ebd45319d0c114859e865b3034b0e984f15e698b45"
inputs-digest = "6c999da3cbcf5eac93468232147f2d8e372236a297ddd09275edb065f1bc23ae"
solver-name = "gps-cdcl"
solver-version = 1

View File

@ -9,6 +9,10 @@
[[constraint]]
name = "github.com/hashicorp/golang-lru"
[[constraint]]
name = "github.com/spf13/cobra"
version = "~0.0.1"
[[override]]
name = "google.golang.org/genproto"
revision = "7fd901a49ba6a7f87732eb344f6e3c5b19d1b200"

View File

@ -1,8 +1,24 @@
# Copyright 2018 Tendermint. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
PACKAGES=$(shell go list ./... | grep -v '/vendor/')
COMMIT_HASH := $(shell git rev-parse --short HEAD)
BUILD_FLAGS = -tags netgo -ldflags "-X github.com/cosmos/ethermint/version.GitCommit=${COMMIT_HASH}"
DOCKER_TAG = unstable
DOCKER_IMAGE = tendermint/ethermint
ETHERMINT_DAEMON_BINARY = emintd
ETHERMINT_CLI_BINARY = emintcli
DEP = github.com/golang/dep/cmd/dep
GOLINT = github.com/tendermint/lint/golint
@ -26,17 +42,22 @@ GOCYCLO_CHECK := $(shell command -v gocyclo 2> /dev/null)
all: tools deps install
ci: tools deps install
#######################
### Build / Install ###
#######################
build:
ifeq ($(OS),Windows_NT)
go build $(BUILD_FLAGS) -o build/ethermint.exe ./*.go
go build $(BUILD_FLAGS) -o build/$(ETHERMINT_DAEMON_BINARY).exe ./cmd/ethermintd
go build $(BUILD_FLAGS) -o build/$(ETHERMINT_CLI_BINARY).exe ./cmd/ethermintcli
else
go build $(BUILD_FLAGS) -o build/ethermint ./*.go
go build $(BUILD_FLAGS) -o build/$(ETHERMINT_DAEMON_BINARY) ./cmd/ethermintd/
go build $(BUILD_FLAGS) -o build/$(ETHERMINT_CLI_BINARY) ./cmd/ethermintcli/
endif
install:
go install $(BUILD_FLAGS) ./*.go
go install $(BUILD_FLAGS) ./cmd/ethermintd
go install $(BUILD_FLAGS) ./cmd/ethermintcli
clean:
rm -rf ./build ./vendor
@ -45,57 +66,61 @@ update-tools:
@echo "Updating golang dependencies"
go get -u -v $(DEP) $(GOLINT) $(GOMETALINTER) $(UNCONVERT) $(INEFFASSIGN) $(MISSPELL) $(ERRCHECK) $(UNPARAM) $(GOCYCLO)
############################
### Tools / Dependencies ###
############################
tools:
ifdef DEP_CHECK
@echo "Dep is already installed. Run 'make update-tools' to update."
@echo "Dep is already installed. Run 'make update-tools' to update."
else
@echo "Installing dep"
go get -v $(DEP)
endif
ifdef GOLINT_CHECK
@echo "Golint is already installed. Run 'make update-tools' to update."
@echo "Golint is already installed. Run 'make update-tools' to update."
else
@echo "Installing golint"
go get -v $(GOLINT)
endif
ifdef GOMETALINTER_CHECK
@echo "Gometalinter.v2 is already installed. Run 'make update-tools' to update."
@echo "Gometalinter.v2 is already installed. Run 'make update-tools' to update."
else
@echo "Installing gometalinter.v2"
go get -v $(GOMETALINTER)
endif
ifdef UNCONVERT_CHECK
@echo "Unconvert is already installed. Run 'make update-tools' to update."
@echo "Unconvert is already installed. Run 'make update-tools' to update."
else
@echo "Installing unconvert"
go get -v $(UNCONVERT)
endif
ifdef INEFFASSIGN_CHECK
@echo "Ineffassign is already installed. Run 'make update-tools' to update."
@echo "Ineffassign is already installed. Run 'make update-tools' to update."
else
@echo "Installing ineffassign"
go get -v $(INEFFASSIGN)
endif
ifdef MISSPELL_CHECK
@echo "misspell is already installed. Run 'make update-tools' to update."
@echo "misspell is already installed. Run 'make update-tools' to update."
else
@echo "Installing misspell"
go get -v $(MISSPELL)
endif
ifdef ERRCHECK_CHECK
@echo "errcheck is already installed. Run 'make update-tools' to update."
@echo "errcheck is already installed. Run 'make update-tools' to update."
else
@echo "Installing errcheck"
go get -v $(ERRCHECK)
endif
ifdef UNPARAM_CHECK
@echo "unparam is already installed. Run 'make update-tools' to update."
@echo "unparam is already installed. Run 'make update-tools' to update."
else
@echo "Installing unparam"
go get -v $(UNPARAM)
endif
ifdef GOCYCLO_CHECK
@echo "goyclo is already installed. Run 'make update-tools' to update."
@echo "goyclo is already installed. Run 'make update-tools' to update."
else
@echo "Installing goyclo"
go get -v $(GOCYCLO)
@ -106,6 +131,10 @@ deps:
@echo "--> Running dep ensure"
@dep ensure -v
#######################
### Testing / Misc. ###
#######################
godocs:
@echo "--> Wait a few seconds and visit http://localhost:6060/pkg/github.com/cosmos/ethermint"
godoc -http=:6060
@ -115,4 +144,4 @@ docker:
docker tag ${DOCKER_IMAGE}:${DOCKER_TAG} ${DOCKER_IMAGE}:latest
docker tag ${DOCKER_IMAGE}:${DOCKER_TAG} ${DOCKER_IMAGE}:${COMMIT_HASH}
.PHONY: build install update-tools tools deps godocs
.PHONY: build install update-tools tools deps godocs clean

45
app/ethermint.go Normal file
View File

@ -0,0 +1,45 @@
package app
import (
bam "github.com/cosmos/cosmos-sdk/baseapp"
"github.com/cosmos/cosmos-sdk/wire"
)
const (
appName = "Ethermint"
)
// EthermintApp implements an extended ABCI application.
type EthermintApp struct {
*bam.BaseApp
codec *wire.Codec
sealed bool
// TODO: stores and keys
// TODO: keepers
// TODO: mappers
}
// NewEthermintApp returns a reference to a new initialized Ethermint
// application.
func NewEthermintApp(opts ...func(*EthermintApp)) *EthermintApp {
app := &EthermintApp{}
// TODO: implement constructor
for _, opt := range opts {
opt(app)
}
app.seal()
return app
}
// seal seals the Ethermint application and prohibits any future modifications
// that change critical components.
func (app *EthermintApp) seal() {
app.sealed = true
}

7
cmd/ethermintcli/main.go Normal file
View File

@ -0,0 +1,7 @@
package main
func main() {
// TODO: Implement CLI commands and logic
//
// Ref: https://github.com/cosmos/ethermint/issues/432
}

7
cmd/ethermintd/main.go Normal file
View File

@ -0,0 +1,7 @@
package main
func main() {
// TODO: Implement daemon command and logic
//
// Ref: https://github.com/cosmos/ethermint/issues/433
}

1
server/start.go Normal file
View File

@ -0,0 +1 @@
package server

8
types/context.go Normal file
View File

@ -0,0 +1,8 @@
package types
// AppContext provides the ability for the application to pass around and
// obtain immutable objects easily. More importantly, it allows for the
// utilization of the object-capability model in which components gain access
// to other components for which they truly need.
type AppContext struct {
}

10
version/version.go Normal file
View File

@ -0,0 +1,10 @@
package version
// Version contains the application semantic version.
//
// TODO: How do we want to version this being that an initial Ethermint has
// been developed?
const Version = "0.0.0"
// GitCommit contains the git SHA1 short hash set by build flags.
var GitCommit = ""

0
x/.keep Normal file
View File