Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
易企天创
zendata
提交
ff71e6a4
Z
zendata
项目概览
易企天创
/
zendata
9 个月 前同步成功
通知
17
Star
2
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zendata
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ff71e6a4
编写于
7月 28, 2020
作者:
aaronchen2k2k
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
upadate res path
上级
c2d02b72
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
48 addition
and
317 deletion
+48
-317
demo/smoke.yaml
demo/smoke.yaml
+18
-8
src/action/generator.go
src/action/generator.go
+1
-1
src/gen/generator.go
src/gen/generator.go
+22
-10
src/gen/res.go
src/gen/res.go
+4
-4
src/gen/text.go
src/gen/text.go
+1
-1
src/utils/const/const.go
src/utils/const/const.go
+1
-2
src/utils/lang/lang.go
src/utils/lang/lang.go
+0
-163
src/utils/stdin/stdin.go
src/utils/stdin/stdin.go
+0
-128
src/utils/vari/var.go
src/utils/vari/var.go
+1
-0
未找到文件。
demo/smoke.yaml
浏览文件 @
ff71e6a4
...
...
@@ -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
:
"
,"
src/action/generator.go
浏览文件 @
ff71e6a4
...
...
@@ -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
)
...
...
src/gen/generator.go
浏览文件 @
ff71e6a4
...
...
@@ -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
index
OfRow
:=
0
count
:=
0
for
{
// 处理格式、前后缀、loop等
str
:=
GenerateFieldValWithFix
(
field
,
fieldValue
,
&
index
,
withFix
)
str
:=
GenerateFieldValWithFix
(
field
,
fieldValue
,
&
index
OfRow
,
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
{
...
...
src/gen/res.go
浏览文件 @
ff71e6a4
...
...
@@ -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
src/gen/text.go
浏览文件 @
ff71e6a4
...
...
@@ -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
)
...
...
src/utils/const/const.go
浏览文件 @
ff71e6a4
...
...
@@ -25,8 +25,7 @@ var (
MinHeight
=
36
CmdViewHeight
=
10
Total
=
10
MaxNumb
=
100000
// max number in array
FormatText
=
"text"
...
...
src/utils/lang/lang.go
已删除
100644 → 0
浏览文件 @
c2d02b72
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
()
}
src/utils/stdin/stdin.go
浏览文件 @
ff71e6a4
...
...
@@ -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
()
...
...
src/utils/vari/var.go
浏览文件 @
ff71e6a4
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录