From 9466bd826bcd31e8664f185fcef648d776729997 Mon Sep 17 00:00:00 2001
From: Benjamin Bollen <ben@erisindustries.com>
Date: Thu, 12 May 2016 20:30:48 +0200
Subject: [PATCH] start cobra for edb

---
 cmd/eris-db.go     | 63 ++++++++++++++++++++++++++++++++++
 cmd/erisdb/main.go | 84 ++++++++++++++++++++++++++++++----------------
 cmd/serve.go       | 30 +++++++++++++++++
 3 files changed, 148 insertions(+), 29 deletions(-)
 create mode 100644 cmd/eris-db.go
 create mode 100644 cmd/serve.go

diff --git a/cmd/eris-db.go b/cmd/eris-db.go
new file mode 100644
index 00000000..543442a1
--- /dev/null
+++ b/cmd/eris-db.go
@@ -0,0 +1,63 @@
+// Copyright 2015, 2016 Eris Industries (UK) Ltd.
+// This file is part of Eris-RT
+
+// Eris-RT is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Eris-RT is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Eris-RT.  If not, see <http://www.gnu.org/licenses/>.
+
+package commands
+
+import (
+  "fmt"
+  "os"
+
+  cobra "github.com/spf13/cobra"
+
+  common "github.com/eris-ltd/common/go/common"
+
+  version "github.com/eris-ltd/eris-db/version"
+)
+
+const VERSION = version.VERSION
+
+var ErisDbCmd = &cobra.Command {
+  Use:   "eris-db"
+  Short: "Eris-DB is the beating heart of the eris chain."
+  Long:  `Eris-DB is the beating heart of the eris chain.  Eris-DB combines
+a modular consensus engine and application manager to run a chain to suit
+your needs.
+
+Made with <3 by Eris Industries.
+
+Complete documentation is available at https://docs.erisindustries.com
+` + "\nVERSION:\n " + VERSION,
+  PersistentPreRun: func(cmd *cobra.Command, args [string]) {
+    // TODO: [ben] set up eris logger after glide resolution of logrus
+  },
+  Run: func(cmd *cobra.Command, args []string) { cmd.Help() },
+}
+
+func Execute() {
+  AddCommands()
+  ErisDbCmd.Execute()
+}
+
+func AddCommands() {
+  buildServeCommand()
+  ErisDbCmd.AddCommand()
+}
+
+func AddGlobalFlags() {
+	ErisCMCmd.PersistentFlags().BoolVarP(&do.Verbose, "verbose", "v", defaultVerbose(), "verbose output; more output than no output flags; less output than debug level; default respects $ERIS_DB_VERBOSE")
+	ErisCMCmd.PersistentFlags().BoolVarP(&do.Debug, "debug", "d", defaultDebug(), "debug level output; the most output available for eris-db; if it is too chatty use verbose flag; default respects $ERIS_DB_DEBUG")
+	ErisCMCmd.PersistentFlags().BoolVarP(&do.Output, "output", "o", defaultOutput(), "should eris-db provide an output of its job; default respects $ERIS_DB_OUTPUT")
+}
diff --git a/cmd/erisdb/main.go b/cmd/erisdb/main.go
index a3ef77a8..2cf48ace 100644
--- a/cmd/erisdb/main.go
+++ b/cmd/erisdb/main.go
@@ -1,36 +1,62 @@
+// Copyright 2015, 2016 Eris Industries (UK) Ltd.
+// This file is part of Eris-RT
+
+// Eris-RT is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Eris-RT is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Eris-RT.  If not, see <http://www.gnu.org/licenses/>.
+
 package main
 
 import (
-	"fmt"
-	edb "github.com/eris-ltd/eris-db/erisdb"
-	"os"
+	"github.com/eris-ltd/eris-db/cmd"
 )
 
-// TODO the input stuff.
 func main() {
-	args := os.Args[1:]
-	var baseDir string
-	var inProc bool
-	if len(args) > 0 {
-		baseDir = args[0]
-		if len(args) > 1 {
-			if args[1] == "inproc" {
-				inProc = true
-			}
-		}
-	} else {
-		baseDir = os.Getenv("HOME") + "/.erisdb"
-	}
-
-	proc, errSt := edb.ServeErisDB(baseDir, inProc)
-	if errSt != nil {
-		panic(errSt.Error())
-	}
-	errSe := proc.Start()
-	if errSe != nil {
-		panic(errSe.Error())
-	}
-	// TODO For now.
-	fmt.Println("DONTMINDME55891")
-	<-proc.StopEventChannel()
+  commands.Execute()
 }
+
+// package main
+//
+// import (
+// 	"fmt"
+// 	edb "github.com/eris-ltd/eris-db/erisdb"
+// 	"os"
+// )
+//
+// // TODO the input stuff.
+// func main() {
+// 	args := os.Args[1:]
+// 	var baseDir string
+// 	var inProc bool
+// 	if len(args) > 0 {
+// 		baseDir = args[0]
+// 		if len(args) > 1 {
+// 			if args[1] == "inproc" {
+// 				inProc = true
+// 			}
+// 		}
+// 	} else {
+// 		baseDir = os.Getenv("HOME") + "/.erisdb"
+// 	}
+//
+// 	proc, errSt := edb.ServeErisDB(baseDir, inProc)
+// 	if errSt != nil {
+// 		panic(errSt.Error())
+// 	}
+// 	errSe := proc.Start()
+// 	if errSe != nil {
+// 		panic(errSe.Error())
+// 	}
+// 	// TODO For now.
+// 	fmt.Println("DONTMINDME55891")
+// 	<-proc.StopEventChannel()
+// }
diff --git a/cmd/serve.go b/cmd/serve.go
new file mode 100644
index 00000000..d2e385b7
--- /dev/null
+++ b/cmd/serve.go
@@ -0,0 +1,30 @@
+// Copyright 2015, 2016 Eris Industries (UK) Ltd.
+// This file is part of Eris-RT
+
+// Eris-RT is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Eris-RT is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Eris-RT.  If not, see <http://www.gnu.org/licenses/>.
+
+package commands
+
+import (
+  "fmt"
+  "os"
+
+  cobra "github.com/spf13/cobra"
+
+  common "github.com/eris-ltd/common/go/common"
+
+  serve "github.com/eris-ltd/eris-db/serve"
+)
+
+var
-- 
GitLab