提交 ff71e6a4 编写于 作者: aaronchen2k2k's avatar aaronchen2k2k

upadate res path

上级 c2d02b72
......@@ -29,11 +29,21 @@ fields:
- field: field6
fields:
- field: child1
range: a-g
prefix: part1_
postfix: '|'
- field: child2
range: 1-3
prefix: part2_
postfix: '|'
range: X-Z
prefix:
postfix: "\t"
- field: child2
prefix: "["
postfix: "]"
fields:
- field: child2.1
range: a-c
prefix:
postfix: "\t"
- field: child2.2
range: 1-9
prefix:
loop: 3
loopfix: ","
......@@ -34,7 +34,7 @@ func Generate(defaultFile string, configFile string, total int, fieldsToExportSt
fieldsToExport = strings.Split(fieldsToExportStr, ",")
}
constant.Total = total
vari.Total = total
rows, colTypes := gen.GenerateForDefinition(defaultFile, configFile, &fieldsToExport, total)
Print(rows, format, out, table, colTypes, fieldsToExport)
......
......@@ -3,7 +3,6 @@ package gen
import (
"fmt"
"github.com/easysoft/zendata/src/model"
constant "github.com/easysoft/zendata/src/utils/const"
fileUtils "github.com/easysoft/zendata/src/utils/file"
stringUtils "github.com/easysoft/zendata/src/utils/string"
"github.com/easysoft/zendata/src/utils/vari"
......@@ -64,8 +63,12 @@ func GenerateForField(field *model.DefField, total int, withFix bool) []string {
arrOfArr = append(arrOfArr, childValues)
}
connectChildrenToSingleStr(arrOfArr, total, &values)
values = LoopSubFields(field, values, total, true)
count := total
if strings.Index(field.Path, "") > -1 { // is child, gen x*y records
count = getRecordCount(arrOfArr)
}
connectChildrenToSingleStr(arrOfArr, count, &values)
values = LoopSubFields(field, values, count, true)
} else if field.From != "" { // refer to res
......@@ -118,7 +121,7 @@ func GenerateFieldItemsFromDefinition(field *model.DefField) []string {
values = append(values, str)
count++
if count >= constant.Total {
if index >= len(fieldValue.Values) || count >= vari.Total {
break
}
}
......@@ -187,15 +190,15 @@ func LoopSubFields(field *model.DefField, oldValues []string, total int, withFix
fieldValue.Values = append(fieldValue.Values, val)
}
index := 0
indexOfRow := 0
count := 0
for {
// 处理格式、前后缀、loop等
str := GenerateFieldValWithFix(field, fieldValue, &index, withFix)
str := GenerateFieldValWithFix(field, fieldValue, &indexOfRow, withFix)
values = append(values, str)
count++
if count >= total {
if indexOfRow >= len(fieldValue.Values) || count >= total {
break
}
}
......@@ -260,13 +263,13 @@ func computerLoop(field *model.DefField) {
func connectChildrenToSingleStr(arrOfArr [][]string, total int, values *[]string) {
indexArr := getModArr(arrOfArr)
for count := 0; count < total; count++ {
str := strconv.Itoa(count) + ": "
for i := 0; i < total; i++ {
str := ""
for j := 0; j < len(arrOfArr); j++ {
child := arrOfArr[j]
mod := indexArr[j]
remainder := count / mod % len(child)
remainder := i / mod % len(child)
str = str + child[remainder]
}
......@@ -274,6 +277,15 @@ func connectChildrenToSingleStr(arrOfArr [][]string, total int, values *[]string
}
}
func getRecordCount(arrOfArr [][]string) int {
count := 1
for i := 0; i < len(arrOfArr); i++ {
arr := arrOfArr[i]
count = len(arr) * count
}
return count
}
func getModArr(arrOfArr [][]string) []int {
indexArr := make([]int, 0)
for _, _ = range arrOfArr {
......
......@@ -159,7 +159,7 @@ func getResForInstances(insts model.ResInsts) map[string][]string {
// gen values
group := child.Instance
groupedValueParent[group] = GenerateForField(&field, constant.Total, false)
groupedValueParent[group] = GenerateForField(&field, vari.Total, false)
}
} else if len(parentRanges.Ranges) > 0 {
groupedValueParent = getResForRanges(parentRanges)
......@@ -173,7 +173,7 @@ func getResForInstances(insts model.ResInsts) map[string][]string {
// gen values
group := inst.Instance
groupedValue[group] = GenerateForField(&field, constant.Total, false)
groupedValue[group] = GenerateForField(&field, vari.Total, false)
}
return groupedValue
......@@ -224,7 +224,7 @@ func getResForRanges(ranges model.ResRanges) map[string][]string {
tempField.Field = ranges.Field
tempField.Range = exp
groupedValue[group] = GenerateForField(&tempField, constant.Total, false)
groupedValue[group] = GenerateForField(&tempField, vari.Total, false)
}
return groupedValue
......@@ -234,7 +234,7 @@ func getResForConfig(configRes model.DefField) map[string][]string {
groupedValue := map[string][]string{}
// config field is a standard field
groupedValue["all"] = GenerateForField(&configRes, constant.Total, false)
groupedValue["all"] = GenerateForField(&configRes, vari.Total, false)
return groupedValue
}
\ No newline at end of file
......@@ -23,7 +23,7 @@ func GenerateFieldValuesFromText(field *model.DefField, fieldValue *model.FieldV
stepStr := "1"
if len(sectionArr) == 2 { stepStr = sectionArr[1] }
// read from
// read from file
list := make([]string, 0)
realPath := findFilePath(file)
content, err := ioutil.ReadFile(realPath)
......
......@@ -25,8 +25,7 @@ var (
MinHeight = 36
CmdViewHeight = 10
Total = 10
MaxNumb = 100000 // max number in array
FormatText = "text"
......
package langUtils
import (
i118Utils "github.com/easysoft/zendata/src/utils/i118"
logUtils "github.com/easysoft/zendata/src/utils/log"
stringUtils "github.com/easysoft/zendata/src/utils/string"
"github.com/fatih/color"
"sort"
"strconv"
"strings"
"sync"
)
var LangMap map[string]map[string]string
func initSupportedScriptLang() map[string]map[string]string {
var once sync.Once
once.Do(func() {
LangMap = map[string]map[string]string{
"bat": {
"extName": "bat",
"commentsTag": "::",
"printGrammar": "echo #",
},
"javascript": {
"extName": "js",
"commentsTag": "//",
"printGrammar": "console.log(\"#\")",
"interpreter": "C:\\nodejs\\node.exe",
},
"lua": {
"extName": "lua",
"commentsTag": "--",
"printGrammar": "print('#')",
"interpreter": "C:\\Lua\\5.1\\lua.exe",
},
"perl": {
"extName": "pl",
"commentsTag": "#",
"printGrammar": "print \"#\\n\";",
"interpreter": "C:\\Perl64\\bin\\perl.exe",
},
"php": {
"extName": "php",
"commentsTag": "//",
"printGrammar": "echo \"#\\n\";",
"interpreter": "C:\\php-7.3.9-Win32-VC15-x64\\php.exe",
},
"python": {
"extName": "py",
"commentsTag": "#",
"printGrammar": "print(\"#\")",
"interpreter": "C:\\Python37-32\\python.exe",
},
"ruby": {
"extName": "rb",
"commentsTag": "#",
"printGrammar": "print(\"#\\n\")",
"interpreter": "C:\\Ruby26-x64\\bin\\ruby.exe",
},
"shell": {
"extName": "sh",
"commentsTag": "#",
"printGrammar": "echo \"#\"",
},
"tcl": {
"extName": "tl",
"commentsTag": "#",
"printGrammar": "set hello \"#\"; \n puts [set hello];",
"interpreter": "C:\\ActiveTcl\\bin\\tclsh.exe",
},
"autoit": {
"extName": "au3",
"commentsTag": "#",
"printGrammar": "ConsoleWrite(text & @CRLF)",
"interpreter": "c:\\Program Files (x86)\\AutoIt3\\AutoIt3_x64.exe",
},
}
})
return LangMap
}
func GetSupportLanguageOptions(scriptExtsInDir []string) ([]string, []string, []string) {
arr0 := GetSupportLanguageArrSort()
numbs := make([]string, 0)
names := make([]string, 0)
labels := make([]string, 0)
for idx, lang := range arr0 {
ext := LangMap[lang]["extName"]
if scriptExtsInDir != nil {
found := stringUtils.FindInArr(ext, scriptExtsInDir)
if !found {
continue
}
}
numbs = append(numbs, strconv.Itoa(idx+1))
names = append(names, lang)
if lang == "bat" || lang == "php" {
lang = stringUtils.UcAll(lang)
} else {
lang = stringUtils.Ucfirst(lang)
}
labels = append(labels, strconv.Itoa(idx+1)+". "+lang)
}
return numbs, names, labels
}
func GetSupportLanguageArrSort() []string {
arr := make([]string, 0)
for lang, _ := range LangMap {
arr = append(arr, lang)
}
sort.Strings(arr)
return arr
}
func GetSupportLanguageExtArr() []string {
arr := make([]string, 0)
for _, key := range GetSupportLanguageArrSort() {
arr = append(arr, LangMap[key]["extName"])
}
return arr
}
func CheckSupportLanguages(scriptLang string) bool {
if LangMap[scriptLang] == nil {
langStr := strings.Join(GetSupportLanguageArrSort(), ", ")
logUtils.PrintToWithColor(i118Utils.I118Prt.Sprintf("only_support_script_language", langStr)+"\n", color.FgRed)
return false
}
return true
}
func GetSupportLanguageExtRegx() string {
regx := "(" + strings.Join(GetSupportLanguageExtArr(), "|") + ")"
return regx
}
func GetExtToNameMap() map[string]string {
extMap := make(map[string]string, 0)
for _, key := range GetSupportLanguageArrSort() {
extMap[LangMap[key]["extName"]] = key
}
return extMap
}
func init() {
initSupportedScriptLang()
}
......@@ -2,102 +2,15 @@ package stdinUtils
import (
"bufio"
"fmt"
fileUtils "github.com/easysoft/zendata/src/utils/file"
i118Utils "github.com/easysoft/zendata/src/utils/i118"
langUtils "github.com/easysoft/zendata/src/utils/lang"
logUtils "github.com/easysoft/zendata/src/utils/log"
"github.com/fatih/color"
"os"
"regexp"
"strconv"
"strings"
)
func InputForCheckout(productId *string, moduleId *string, suiteId *string, taskId *string,
independentFile *bool, scriptLang *string) {
var numb string
productCheckbox := ""
suiteCheckbox := ""
taskCheckbox := ""
if *productId != "" {
productCheckbox = "*"
numb = "1"
} else if *suiteId != "" {
suiteCheckbox = "*"
numb = "2"
} else if *taskId != "" {
taskCheckbox = "*"
numb = "3"
}
coType := GetInput("(1|2|3)", numb, "enter_co_type", productCheckbox, suiteCheckbox, taskCheckbox)
coType = strings.ToLower(coType)
if coType == "1" {
*productId = GetInput("\\d+", *productId,
i118Utils.I118Prt.Sprintf("pls_enter")+" "+i118Utils.I118Prt.Sprintf("product_id")+": "+*productId)
*moduleId = GetInput("\\d*", *moduleId,
i118Utils.I118Prt.Sprintf("pls_enter")+" "+i118Utils.I118Prt.Sprintf("module_id")+": "+*moduleId)
} else if coType == "2" {
*suiteId = GetInput("\\d+", *suiteId,
i118Utils.I118Prt.Sprintf("pls_enter")+" "+i118Utils.I118Prt.Sprintf("suite_id")+": "+*suiteId)
} else if coType == "3" {
*taskId = GetInput("\\d+", *taskId,
i118Utils.I118Prt.Sprintf("pls_enter")+" "+i118Utils.I118Prt.Sprintf("task_id")+": "+*taskId)
}
InputForBool(independentFile, false, "enter_co_independent")
numbs, names, labels := langUtils.GetSupportLanguageOptions(nil)
fmtParam := make([]string, 0)
dft := ""
for idx, label := range labels {
if names[idx] == *scriptLang {
dft = strconv.Itoa(idx + 1)
label += " *"
}
fmtParam = append(fmtParam, label)
}
langStr := GetInput("("+strings.Join(numbs, "|")+")", dft, "enter_co_language", strings.Join(fmtParam, "\n"))
langNumb, _ := strconv.Atoi(langStr)
*scriptLang = names[langNumb-1]
}
func InputForDir(dir *string, dft string, i118Key string) {
*dir = GetInput("is_dir", dft, "enter_dir", i118Utils.I118Prt.Sprintf(i118Key))
}
func InputForBool(in *bool, defaultVal bool, fmtStr string, fmtParam ...interface{}) {
str := GetInput("(yes|no|y|n|)", "", fmtStr, fmtParam...)
if str == "" {
*in = defaultVal
msg := ""
if *in {
msg = "yes"
} else {
msg = "no"
}
logUtils.PrintTo(msg)
return
}
if str == "y" && str != "yes" {
*in = true
} else {
*in = false
}
}
func GetInput(regx string, defaultVal string, fmtStr string, params ...interface{}) string {
var ret string
......@@ -147,47 +60,6 @@ func GetInput(regx string, defaultVal string, fmtStr string, params ...interface
}
}
func GetInputForScriptInterpreter(defaultVal string, fmtStr string, params ...interface{}) string {
var ret string
msg := i118Utils.I118Prt.Sprintf(fmtStr, params...)
for {
logUtils.PrintToWithColor(msg, color.FgCyan)
Scanf(&ret)
ret = strings.TrimSpace(ret)
if ret == "" && defaultVal != "" {
ret = defaultVal
logUtils.PrintToWithColor(ret, -1)
}
if ret == "exit" {
color.Unset()
os.Exit(0)
}
if ret == "" { // ignore to set
return "-"
}
sep := string(os.PathSeparator)
if sep == `\` {
sep = `\\`
}
reg := fmt.Sprintf(".*%s+[^%s]+", sep, sep)
pass, _ := regexp.MatchString(reg, ret)
if pass {
return ret
} else {
ret = ""
logUtils.PrintToWithColor(i118Utils.I118Prt.Sprintf("invalid_input"), color.FgRed)
}
}
}
func Scanf(a *string) {
reader := bufio.NewReader(os.Stdin)
data, _, _ := reader.ReadLine()
......
......@@ -20,6 +20,7 @@ var (
Verbose bool
Interpreter string
Total int
WithHead bool
HeadSep string
Trim bool
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册