feat(ReverseEngine):初始化工程
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"ReverseEngine/imp"
|
||||
"ReverseEngine/reverse"
|
||||
"ReverseEngine/support"
|
||||
"ReverseEngine/util"
|
||||
"bufio"
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"reflect"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var database string
|
||||
var tableName string
|
||||
var filepath string
|
||||
var cover bool
|
||||
|
||||
func main() {
|
||||
//转换函数
|
||||
reverseMain()
|
||||
}
|
||||
|
||||
func reverseMain() {
|
||||
//报错是否直接停止程序,有的时候就是说,我可能输错了,但是我不想停止程序,那就会尴尬,这边配置一个报错不停止的标识
|
||||
panicStop := flag.Bool("panicStop", false, "错误是否进行停止")
|
||||
flag.Parse()
|
||||
conti := true
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
fmt.Print("逆向工程生成中")
|
||||
fmt.Print("请出入你需要操作的数据库:\n")
|
||||
database, _ = reader.ReadString('\n')
|
||||
database = strings.Trim(database, "\n")
|
||||
e := reverse.NewEngine()
|
||||
e.SetReverseCheck(&support.CheckPathSupport{})
|
||||
|
||||
fmt.Println(runOn(conti, reader, e, *panicStop))
|
||||
}
|
||||
|
||||
func runOn(conti bool, reader *bufio.Reader, e *reverse.DataReverseEngine, panicStop bool) string {
|
||||
defer func() {
|
||||
if panicStop == false || conti == false {
|
||||
return
|
||||
}
|
||||
|
||||
if err := recover(); err != nil {
|
||||
util.ColorPrint("程序出错,因为设置panicStop为不停止状态,所以程序继续\n请开始新一轮的反向工程参数设置\n\n\n\n........\n.........\n\n", util.FontColor.Red)
|
||||
runOn(conti, reader, e, panicStop)
|
||||
}
|
||||
|
||||
}()
|
||||
|
||||
for {
|
||||
|
||||
if conti == false {
|
||||
return "程序运行结束"
|
||||
}
|
||||
fmt.Print("请出入你需要操作的表名,该名称不区分大小写,输出即为文件名:\n")
|
||||
tableName, _ = reader.ReadString('\n')
|
||||
tableName = strings.Trim(tableName, "\n")
|
||||
fmt.Print("请出入结构体生成位置(绝对路径):\n")
|
||||
filepath, _ = reader.ReadString('\n')
|
||||
filepath = strings.Trim(filepath, "\n")
|
||||
fmt.Print("如果文件存在是否覆盖(Y表示覆盖):\n")
|
||||
coverS, _ := reader.ReadString('\n')
|
||||
coverS = strings.Trim(coverS, "\n")
|
||||
if coverS == "Y" || coverS == "y" {
|
||||
cover = true
|
||||
}
|
||||
|
||||
e.Engineer(database, tableName, filepath, cover)
|
||||
fmt.Print("是否停止程序,输入Y表示停止:\n")
|
||||
stop, _ := reader.ReadString('\n')
|
||||
stop = strings.Trim(stop, "\n")
|
||||
if stop == "Y" || stop == "y" {
|
||||
conti = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func runOnce() {
|
||||
e := reverse.NewEngine()
|
||||
//e.SetContentGenerate(support.FileContentSUpport2{})
|
||||
e.SetReverseCheck(&support.CheckPathSupport{})
|
||||
e.Engineer("你的数据库", "你的表名", "F:/self_project/src/ReverseEngine/filepath", true)
|
||||
//e.Engineer("你的数据库", "testreversing", "filepath", true)
|
||||
//
|
||||
//s := support.CheckSupport{}
|
||||
//fmt.Println(&s)
|
||||
|
||||
tx := reflect.ValueOf(support.CheckSupport{}).Type()
|
||||
fmt.Println(tx)
|
||||
var ok imp.ReverseCheck = (*support.CheckSupport)(nil)
|
||||
fmt.Println(ok)
|
||||
//t := reflect.ValueOf(Test{}).Type()
|
||||
//fmt.Println(t)
|
||||
//v := reflect.New(t).Elem()
|
||||
//fmt.Println(v)
|
||||
}
|
||||
Reference in New Issue
Block a user