zd.go 2.2 KB
Newer Older
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
1 2 3 4
package main

import (
	"flag"
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
5
	"github.com/easysoft/zendata/src/action"
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
6
	configUtils "github.com/easysoft/zendata/src/utils/config"
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
7
	logUtils "github.com/easysoft/zendata/src/utils/log"
aaronchen2k2k's avatar
i118  
aaronchen2k2k 已提交
8
	"github.com/easysoft/zendata/src/utils/vari"
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
9
	"github.com/fatih/color"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
10
	"io/ioutil"
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
11 12 13 14 15 16
	"os"
	"os/signal"
	"syscall"
)

var (
aaronchen2k2k's avatar
aaronchen2k2k 已提交
17 18
	deflt string
	yml string
aaronchen2k2k's avatar
aaronchen2k2k 已提交
19
	count  int
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
20
	fields string
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
21

aaronchen2k2k's avatar
aaronchen2k2k 已提交
22 23 24
	input  string
	output string
	table  = "text"
aaronchen2k2k's avatar
help  
aaronchen2k2k 已提交
25
	format = "text"
aaronchen2k2k's avatar
aaronchen2k2k 已提交
26 27 28 29

	viewRes string
	viewDetail string

aaronchen2k2k's avatar
aaronchen2k2k 已提交
30
	help   bool
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
31 32 33 34 35 36 37 38 39 40 41 42 43

	flagSet *flag.FlagSet
)

func main() {
	channel := make(chan os.Signal)
	signal.Notify(channel, os.Interrupt, syscall.SIGTERM)
	go func() {
		<-channel
		cleanup()
		os.Exit(0)
	}()

aaronchen2k2k's avatar
aaronchen2k2k 已提交
44
	flagSet = flag.NewFlagSet("zd", flag.ContinueOnError)
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
45

aaronchen2k2k's avatar
aaronchen2k2k 已提交
46
	flagSet.StringVar(&deflt, "d", "", "")
aaronchen2k2k's avatar
aaronchen2k2k 已提交
47
	flagSet.StringVar(&deflt, "default", "", "")
aaronchen2k2k's avatar
aaronchen2k2k 已提交
48 49 50 51

	flagSet.StringVar(&yml, "y", "", "")
	flagSet.StringVar(&yml, "yml", "", "")

aaronchen2k2k's avatar
aaronchen2k2k 已提交
52 53
	flagSet.StringVar(&input, "i", "", "")
	flagSet.StringVar(&input, "input", "", "")
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
54

aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
55 56
	flagSet.IntVar(&count, "c", 10, "")
	flagSet.IntVar(&count, "count", 10, "")
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
57

aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
58
	flagSet.StringVar(&fields, "field", "", "")
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
59

aaronchen2k2k's avatar
aaronchen2k2k 已提交
60 61
	flagSet.StringVar(&output, "o", "", "")
	flagSet.StringVar(&output, "output", "", "")
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
62

aaronchen2k2k's avatar
help  
aaronchen2k2k 已提交
63 64 65
	flagSet.StringVar(&table, "t", "", "")
	flagSet.StringVar(&table, "table", "", "")

aaronchen2k2k's avatar
aaronchen2k2k 已提交
66 67
	flagSet.StringVar(&format, "f", "text", "")
	flagSet.StringVar(&format, "format", "text", "")
aaronchen2k2k's avatar
aaronchen2k2k 已提交
68

aaronchen2k2k's avatar
aaronchen2k2k 已提交
69 70 71
	flagSet.StringVar(&viewRes, "v", "", "")
	flagSet.StringVar(&viewDetail, "vv", "", "")

aaronchen2k2k's avatar
aaronchen2k2k 已提交
72 73
	flagSet.BoolVar(&vari.HttpService, "s", false, "")

aaronchen2k2k's avatar
i118  
aaronchen2k2k 已提交
74 75
	flagSet.BoolVar(&vari.Verbose, "verbose", false, "")

aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
76
	if len(os.Args) == 1 {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
77
		os.Args = append(os.Args, "-help")
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
78 79 80
	}

	switch os.Args[1] {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
81
	case "-h", "-help":
aaronchen2k2k's avatar
aaronchen2k2k 已提交
82
		usage()
aaronchen2k2k's avatar
aaronchen2k2k 已提交
83
	default:
aaronchen2k2k's avatar
aaronchen2k2k 已提交
84 85 86 87 88 89
		if os.Args[1][0:1] == "-" {
			args := []string{os.Args[0], "gen"}
			args = append(args, os.Args[1:]...)
			os.Args = args
		}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
90
		gen(os.Args)
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
91 92 93
	}
}

aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
94
func gen(args []string) {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
95
	flagSet.SetOutput(ioutil.Discard)
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
96
	if err := flagSet.Parse(args[2:]); err == nil {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
97
		if input != "" {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
98 99
			action.ParseSql(input, output)
		} else {
aaronchen2k2k's avatar
aaronchen2k2k 已提交
100
			action.Generate(deflt, yml, count, fields, output, format, table)
aaronchen2k2k's avatar
aaronchen2k2k 已提交
101
		}
aaronchen2k2k's avatar
aaronchen2k2k 已提交
102 103
	} else {
		usage()
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
104 105 106
	}
}

aaronchen2k2k's avatar
aaronchen2k2k 已提交
107 108 109 110
func usage() {
	logUtils.PrintUsage()
}

aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
111 112
func init() {
	cleanup()
aaronchen2k2k's avatar
aaronchen2k2k 已提交
113

aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
114
	logUtils.InitLogger()
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
115
	configUtils.InitConfig()
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
116 117 118 119
}

func cleanup() {
	color.Unset()
aaronchen2k2k's avatar
init  
aaronchen2k2k 已提交
120
}