command line updated
This commit is contained in:
parent
b5d09c4d1d
commit
101c74c860
27
app/main.go
27
app/main.go
@ -1,7 +1,9 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/yedf/dtm/dtmcli"
|
"github.com/yedf/dtm/dtmcli"
|
||||||
@ -19,6 +21,25 @@ func wait() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
if len(os.Args) == 1 {
|
||||||
|
for _, ln := range []string{
|
||||||
|
"dtm is a lightweight distributed transaction manager.",
|
||||||
|
"usage:",
|
||||||
|
"dtm [command]",
|
||||||
|
"",
|
||||||
|
"Available Commands:",
|
||||||
|
"dtmsvr run dtm as a server. ",
|
||||||
|
"",
|
||||||
|
"quick_start run quick start example. dtm will create all needed table",
|
||||||
|
"qs same as quick_start",
|
||||||
|
} {
|
||||||
|
fmt.Print(ln + "\n")
|
||||||
|
}
|
||||||
|
for name := range examples.Samples {
|
||||||
|
fmt.Printf("%-18srun a sample includes %s\n", name, strings.Replace(name, "_", " ", 100))
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
onlyServer := len(os.Args) > 1 && os.Args[1] == "dtmsvr"
|
onlyServer := len(os.Args) > 1 && os.Args[1] == "dtmsvr"
|
||||||
if !onlyServer { // 实际线上运行,只启动dtmsvr,不准备table相关的数据
|
if !onlyServer { // 实际线上运行,只启动dtmsvr,不准备table相关的数据
|
||||||
dtmsvr.PopulateDB(true)
|
dtmsvr.PopulateDB(true)
|
||||||
@ -43,8 +64,8 @@ func main() {
|
|||||||
examples.GrpcStartup()
|
examples.GrpcStartup()
|
||||||
examples.BaseAppStartup()
|
examples.BaseAppStartup()
|
||||||
|
|
||||||
fn := examples.Samples[os.Args[1]]
|
sample := examples.Samples[os.Args[1]]
|
||||||
dtmcli.LogIfFatalf(fn == nil, "no sample name for %s", os.Args[1])
|
dtmcli.LogIfFatalf(sample == nil, "no sample name for %s", os.Args[1])
|
||||||
fn()
|
sample.Action()
|
||||||
wait()
|
wait()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -131,6 +131,9 @@ type dtmConfigType struct {
|
|||||||
var DtmConfig = dtmConfigType{}
|
var DtmConfig = dtmConfigType{}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
if len(os.Args) == 1 {
|
||||||
|
return
|
||||||
|
}
|
||||||
DtmConfig.TransCronInterval = int64(dtmcli.MustAtoi(dtmcli.OrString(os.Getenv("TRANS_CRON_INTERVAL"), "10")))
|
DtmConfig.TransCronInterval = int64(dtmcli.MustAtoi(dtmcli.OrString(os.Getenv("TRANS_CRON_INTERVAL"), "10")))
|
||||||
DtmConfig.DB = map[string]string{
|
DtmConfig.DB = map[string]string{
|
||||||
"driver": dtmcli.OrString(os.Getenv("DB_DRIVER"), "mysql"),
|
"driver": dtmcli.OrString(os.Getenv("DB_DRIVER"), "mysql"),
|
||||||
|
|||||||
@ -37,12 +37,16 @@ func PopulateDB(skipDrop bool) {
|
|||||||
RunSQLScript(config.DB, file, skipDrop)
|
RunSQLScript(config.DB, file, skipDrop)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type sampleInfo struct {
|
||||||
|
Arg string
|
||||||
|
Action func() string
|
||||||
|
Desc string
|
||||||
|
}
|
||||||
|
|
||||||
// Samples 所有的示例都会注册到这里
|
// Samples 所有的示例都会注册到这里
|
||||||
var Samples = map[string]func() string{}
|
var Samples = map[string]*sampleInfo{}
|
||||||
|
|
||||||
func addSample(name string, fn func() string) {
|
func addSample(name string, fn func() string) {
|
||||||
if Samples[name] != nil {
|
dtmcli.LogIfFatalf(Samples[name] != nil, "%s already exists")
|
||||||
dtmcli.LogFatalf("sample %s duplicated", name)
|
Samples[name] = &sampleInfo{Arg: name, Action: fn}
|
||||||
}
|
|
||||||
Samples[name] = fn
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import (
|
|||||||
func TestExamples(t *testing.T) {
|
func TestExamples(t *testing.T) {
|
||||||
// for coverage
|
// for coverage
|
||||||
examples.QsStartSvr()
|
examples.QsStartSvr()
|
||||||
for _, fn := range examples.Samples {
|
for _, s := range examples.Samples {
|
||||||
assertSucceed(t, fn())
|
assertSucceed(t, s.Action())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user