Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
zendata
提交
18f81227
Z
zendata
项目概览
LinuxSuRen
/
zendata
与 Fork 源项目一致
Fork自
易企天创 / zendata
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zendata
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
18f81227
编写于
8月 28, 2020
作者:
aaronchen2k2k
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix some issues
上级
eaf248f8
变更
11
展开全部
隐藏空白更改
内联
并排
Showing
11 changed file
with
127 addition
and
139 deletion
+127
-139
demo/advanced.yaml
demo/advanced.yaml
+0
-1
demo/default.yaml
demo/default.yaml
+53
-52
demo/test.yaml
demo/test.yaml
+0
-6
demo/test/misc.yaml
demo/test/misc.yaml
+0
-3
demo/test/nested1.yaml
demo/test/nested1.yaml
+1
-4
demo/test/test.yaml
demo/test/test.yaml
+3
-3
res/res.go
res/res.go
+3
-3
res/zh/sample.yaml
res/zh/sample.yaml
+55
-55
src/gen/list.go
src/gen/list.go
+5
-5
src/utils/file/file.go
src/utils/file/file.go
+6
-6
src/utils/string/string.go
src/utils/string/string.go
+1
-1
未找到文件。
demo/advanced.yaml
浏览文件 @
18f81227
...
...
@@ -50,7 +50,6 @@ fields:
-
field
:
field_use_yaml
range
:
测试,测,9-7,test/nested1.yaml{5}
# rand: true
prefix
:
"
***"
postfix
:
"
***
\t
"
...
...
demo/default.yaml
浏览文件 @
18f81227
title
:
zendata数据配置语法说明
desc
:
desc
:
# 文件组成
# 文件组成
# zendata以yaml格式的文件来定义各个字段的格式。
# yaml文件整体由文件说明和字段定义两部分组成。
# zendata以yaml格式的文件来定义各个字段的格式。
# yaml文件整体由文件说明和字段定义两部分组成。
# 文件说明
# 文件说明
# title: 标题,可以用简短的文字概要描述该文件定义的数据类型。
# desc: 描述,可以用多行文本来详细描述该文件定义的数据类型,非必选项。
# author: 作者,非必选项。
# version:版本号,非必选项。
# title: 标题,可以用简短的文字概要描述该文件定义的数据类型。
# desc: 描述,可以用多行文本来详细描述该文件定义的数据类型,非必选项。
# author: 作者,非必选项。
# version:版本号,非必选项。
# 字段列表
# 字段列表
# 字段定义部分都放在fields这个定义里面。
# 一个yaml文件可以包含一个或者多个字段。
# 字段列表以-field定义开始。
# 一个字段可以通过fields属性定义它的子字段。
# 字段定义部分都放在fields这个定义里面。
# 一个yaml文件可以包含一个或者多个字段。
# 字段列表以-field定义开始。
# 一个字段可以通过fields属性定义它的子字段。
# 字段定义
# 字段定义
# field: 字段名,仅支持英文、数字、下换线和.
# range: 列表范围,最重要的定义。
# loop: 循环次数,可以定义某一字段循环多少次。
# loopfix: 每一次循环时的连接符。
# field: 字段名,仅支持英文、数字、下换线和.
# range: 列表范围,最重要的定义。
# loop: 循环次数,可以定义某一字段循环多少次。
# loopfix: 每一次循环时的连接符。
# format: 支持格式化输出。
# format: 支持格式化输出。
# prefix: 该字段的前缀。
# postfix: 该字段的后缀。
# prefix: 该字段的前缀。
# postfix: 该字段的后缀。
# length: 该字段的长度。如果不通过分隔符区分,则需要指定字段长度,单位是字节。
# leftpad: 左填充的字符。如果长度不够,可指定左填充的字符。默认是以空格左填充。
# rightpad: 右填充的字符。如果长度不够,可指定右填充的字符。
# length: 该字段的长度。如果不通过分隔符区分,则需要指定字段长度,单位是字节。
# leftpad: 左填充的字符。如果长度不够,可指定左填充的字符。默认是以空格左填充。
# rightpad: 右填充的字符。如果长度不够,可指定右填充的字符。
# config: 可以引用另外一个文件里面的定义。
# config: 可以引用另外一个文件里面的定义。
# from: 引用某一个定义文件。
# use: 使用被引用文件中定义的若干实例。all代表使用所有。
# select: 如果引用的文件是excel表,可以查询里面的某一个字段。
# where: 如果引用的文件是excel表,可以使用查询条件。
# loop定义
# 可以使用一个数字来指定字段循环的次数,比如loop:2。
# 可以使用区间来定义字段循环的次数。比如loop:2-10。
# range定义
# from: 引用某一个定义文件。
# use: 使用被引用文件中定义的若干实例。all代表使用所有。
# select: 如果引用的文件是excel表,可以查询里面的某一个字段。
# where: 如果引用的文件是excel表,可以使用查询条件。
# 使用逗号连接不同的元素。比如 range: 1,2,3。
# 元素也可以是一个区间。比如 range:1-10, A-Z。
# 区间可以通过冒号:来指定步长。比如 range:1-10:2。
# 步长可以是小数。比如 range: 1-10:0.1。
# 步长可以是负数。比如 range:100-1:-1。
# 区间可以通过R来指定随机。比如 range: 1-10:R,随机和步长只能二选一。
# 可以通过一个文件来指定列表。比如range: list.txt。文件名是相对路径时,以配置文件为基准计算。
# 可以通过{n}的方式来重复某一个元素。比如 range: user1{100},user2{100}
# 如果区间或者几个元素需要重复,需要用[]括起来。比如 range: [user1,user2,user3]{100}
# loop定义
# 可以使用一个数字来指定字段循环的次数,比如loop:2。
# 可以使用区间来定义字段循环的次数。比如loop:2-10。
# range定义
# 使用逗号连接不同的元素。比如 range: 1,2,3。
# 元素也可以是一个区间。比如 range:1-10, A-Z。
# 区间可以通过冒号:来指定步长。比如 range:1-10:2。
# 步长可以是小数。比如 range: 1-10:0.1。
# 步长可以是负数。比如 range:100-1:-1。
# 区间可以通过R来指定随机。比如 range: 1-10:R,随机和步长只能二选一。
# 可以通过一个文件来指定列表。比如range: list.txt。文件名是相对路径时,以配置文件为基准计算。
# 可以通过{n}的方式来重复某一个元素。比如 range: user1{100},user2{100}
# 如果区间或者几个元素需要重复,需要用[]括起来。比如 range: [user1,user2,user3]{100}
author
:
zentao
version
:
1.0
...
...
@@ -114,7 +114,8 @@ fields:
-
field
:
field_nested_instant
# 引用其他的定义文件,且该文件引用了其他实例。
from
:
jenkins.ip.private.yaml
# 引用data/custom/ip/private.yaml
use
:
all
# 使用该文件中的所有实例。
postfix
:
"
\t
"
prefix
:
"
{"
postfix
:
"
}"
-
field
:
field_use_excel
# 从excel数据源里面取数据。
from
:
address.cn.v1.china
# 从data/system/address/v1.xlsx文件中读取名为china的工作簿。
...
...
@@ -124,7 +125,7 @@ fields:
-
field
:
field_with_children
# 嵌套字段
fields
:
-
field
:
child1
-
field
:
child1
range
:
a-z
prefix
:
part1_
postfix
:
'
|'
...
...
@@ -136,9 +137,9 @@ fields:
-
field
:
child_with_child
prefix
:
part3_
postfix
:
fields
:
postfix
:
fields
:
-
field
:
field_grandson
prefix
:
int_
range
:
10-20
:R
postfix
:
range
:
10-20
postfix
:
\ No newline at end of file
demo/test.yaml
浏览文件 @
18f81227
...
...
@@ -29,12 +29,6 @@ fields:
prefix
:
"
["
postfix
:
"
]
\t
"
-
field
:
field_nested_range
from
:
custom.test.number.v1.yaml
use
:
all{5}
prefix
:
"
["
postfix
:
"
]"
-
field
:
field_nested_instant
use
:
all
prefix
:
"
["
\ No newline at end of file
demo/test/misc.yaml
浏览文件 @
18f81227
...
...
@@ -8,13 +8,11 @@ fields:
range
:
1-9
loop
:
2-3
loopfix
:
"
|"
# width: 10
-
field
:
test1
range
:
9-5:R{2}
prefix
:
"
"
postfix
:
"
\t
"
# width: 5
-
field
:
test2
range
:
[
user-2
,
user3
,
user4
,
user5
,
user6
]
:R
...
...
@@ -22,7 +20,6 @@ fields:
loopfix
:
"
|"
prefix
:
"
"
postfix
:
"
\t
"
# width: 25
-
field
:
test3
range
:
[
a
,
b
,
c
]
...
...
demo/test/nested1.yaml
浏览文件 @
18f81227
...
...
@@ -9,7 +9,4 @@ fields:
postfix
:
"
;
\t
"
-
field
:
test1
range
:
a-c,nested2.yaml{2}
# rand: true
prefix
:
"
==="
postfix
:
"
===
\t
"
\ No newline at end of file
range
:
a-c,nested2.yaml{2}
\ No newline at end of file
demo/test/test.yaml
浏览文件 @
18f81227
...
...
@@ -4,12 +4,12 @@ author: zentao
version
:
1.0
fields
:
-
field
:
test
1
range
:
[
userA
,
a-z
,
1-9
,
1-10000
]
# 字面常量及列表
-
field
:
test
0
range
:
[
userA
,
a-z
,
1-9
]
# 字面常量及列表
postfix
:
"
\t
"
-
field
:
test1
range
:
[
userA
,
a-z
,
1-9
,
1-10000
]
# 字面常量及列表
range
:
[
userA
,
a-z
,
1-9
]
# 字面常量及列表
postfix
:
"
\t
"
-
field
:
field_use_instance
...
...
res/res.go
浏览文件 @
18f81227
此差异已折叠。
点击以展开。
res/zh/sample.yaml
浏览文件 @
18f81227
title
:
zendata数据配置语法说明
desc
:
desc
:
# 文件组成
# 文件组成
# zendata以yaml格式的文件来定义各个字段的格式。
# yaml文件整体由文件说明和字段定义两部分组成。
# zendata以yaml格式的文件来定义各个字段的格式。
# yaml文件整体由文件说明和字段定义两部分组成。
# 文件说明
# 文件说明
# title: 标题,可以用简短的文字概要描述该文件定义的数据类型。
# desc: 描述,可以用多行文本来详细描述该文件定义的数据类型,非必选项。
# author: 作者,非必选项。
# version:版本号,非必选项。
# title: 标题,可以用简短的文字概要描述该文件定义的数据类型。
# desc: 描述,可以用多行文本来详细描述该文件定义的数据类型,非必选项。
# author: 作者,非必选项。
# version:版本号,非必选项。
# 字段列表
# 字段列表
# 字段定义部分都放在fields这个定义里面。
# 一个yaml文件可以包含一个或者多个字段。
# 字段列表以-field定义开始。
# 一个字段可以通过fields属性定义它的子字段。
# 字段定义部分都放在fields这个定义里面。
# 一个yaml文件可以包含一个或者多个字段。
# 字段列表以-field定义开始。
# 一个字段可以通过fields属性定义它的子字段。
# 字段定义
# 字段定义
# field: 字段名,仅支持英文、数字、下换线和.
# range: 列表范围,最重要的定义。
# loop: 循环次数,可以定义某一字段循环多少次。
# loopfix: 每一次循环时的连接符。
# field: 字段名,仅支持英文、数字、下换线和.
# range: 列表范围,最重要的定义。
# loop: 循环次数,可以定义某一字段循环多少次。
# loopfix: 每一次循环时的连接符。
# format: 支持格式化输出。
# format: 支持格式化输出。
# prefix: 该字段的前缀。
# postfix: 该字段的后缀。
# prefix: 该字段的前缀。
# postfix: 该字段的后缀。
# length: 该字段的长度。如果不通过分隔符区分,则需要指定字段长度,单位是字节。
# leftpad: 左填充的字符。如果长度不够,可指定左填充的字符。默认是以空格左填充。
# rightpad: 右填充的字符。如果长度不够,可指定右填充的字符。
# length: 该字段的长度。如果不通过分隔符区分,则需要指定字段长度,单位是字节。
# leftpad: 左填充的字符。如果长度不够,可指定左填充的字符。默认是以空格左填充。
# rightpad: 右填充的字符。如果长度不够,可指定右填充的字符。
# config: 可以引用另外一个文件里面的定义。
# config: 可以引用另外一个文件里面的定义。
# from: 引用某一个定义文件。
# use: 使用被引用文件中定义的若干实例。all代表使用所有。
# select: 如果引用的文件是excel表,可以查询里面的某一个字段。
# where: 如果引用的文件是excel表,可以使用查询条件。
# loop定义
# 可以使用一个数字来指定字段循环的次数,比如loop:2。
# 可以使用区间来定义字段循环的次数。比如loop:2-10。
# range定义
# from: 引用某一个定义文件。
# use: 使用被引用文件中定义的若干实例。all代表使用所有。
# select: 如果引用的文件是excel表,可以查询里面的某一个字段。
# where: 如果引用的文件是excel表,可以使用查询条件。
# 使用逗号连接不同的元素。比如 range: 1,2,3。
# 元素也可以是一个区间。比如 range:1-10, A-Z。
# 区间可以通过冒号:来指定步长。比如 range:1-10:2。
# 步长可以是小数。比如 range: 1-10:0.1。
# 步长可以是负数。比如 range:100-1:-1。
# 区间可以通过R来指定随机。比如 range: 1-10:R,随机和步长只能二选一。
# 可以通过一个文件来指定列表。比如range: list.txt。文件名是相对路径时,以配置文件为基准计算。
# 可以通过{n}的方式来重复某一个元素。比如 range: user1{100},user2{100}
# 如果区间或者几个元素需要重复,需要用[]括起来。比如 range: [user1,user2,user3]{100}
# loop定义
# 可以使用一个数字来指定字段循环的次数,比如loop:2。
# 可以使用区间来定义字段循环的次数。比如loop:2-10。
# range定义
# 使用逗号连接不同的元素。比如 range: 1,2,3。
# 元素也可以是一个区间。比如 range:1-10, A-Z。
# 区间可以通过冒号:来指定步长。比如 range:1-10:2。
# 步长可以是小数。比如 range: 1-10:0.1。
# 步长可以是负数。比如 range:100-1:-1。
# 区间可以通过R来指定随机。比如 range: 1-10:R,随机和步长只能二选一。
# 可以通过一个文件来指定列表。比如range: list.txt。文件名是相对路径时,以配置文件为基准计算。
# 可以通过{n}的方式来重复某一个元素。比如 range: user1{100},user2{100}
# 如果区间或者几个元素需要重复,需要用[]括起来。比如 range: [user1,user2,user3]{100}
author
:
zentao
version
:
1.0
...
...
@@ -102,30 +102,30 @@ fields:
postfix
:
"
\t
"
-
field
:
field_use_ranges
# 引用內置的定义文件,该文件定义了多个range,他们共享了一些field层面的属性。
from
:
custom.test.number.v1.yaml
# 引用data/custom/number/v1.yaml文件里面的ranges定义。
from
:
jenkins.number.v1.yaml
# 引用data/custom/number/v1.yaml文件里面的ranges定义。
use
:
medium
# 使用该文件中定义的medium分组。
postfix
:
"
\t
"
-
field
:
field_use_instance
# 引用其他的定义文件,该文件定义了多个实例。
from
:
system.ip.v1.yaml
# 引用data/system/ip/v1.yaml
from
:
ip.v1.yaml
# 引用data/system/ip/v1.yaml
use
:
privateC,privateB
# 使用该文件中定义的privateC和privateB两个实例。
postfix
:
"
\t
"
-
field
:
field_nested_instant
# 引用其他的定义文件,且该文件引用了其他实例。
from
:
custom.ip.private.yaml
# 引用data/custom/ip/private.yaml
from
:
jenkins.ip.private.yaml
# 引用data/custom/ip/private.yaml
use
:
all
# 使用该文件中的所有实例。
prefix
:
"
{"
postfix
:
"
}"
-
field
:
field_use_excel
# 从excel数据源里面取数据。
from
:
system.address.v1.china
# 从data/system/address/v1.xlsx文件中读取名为china的工作簿。
from
:
address.cn.v1.china
# 从data/system/address/v1.xlsx文件中读取名为china的工作簿。
select
:
city
# 查询city字段。
where
:
state like '%山东%'
# 条件是省份包含山东。
where
:
state like '%山东%'
# 条件是省份包含山东。
postfix
:
"
\t
"
-
field
:
field_with_children
# 嵌套字段
fields
:
-
field
:
child1
-
field
:
child1
range
:
a-z
prefix
:
part1_
postfix
:
'
|'
...
...
@@ -137,9 +137,9 @@ fields:
-
field
:
child_with_child
prefix
:
part3_
postfix
:
fields
:
postfix
:
fields
:
-
field
:
field_grandson
prefix
:
int_
range
:
10-20
postfix
:
postfix
:
\ No newline at end of file
src/gen/list.go
浏览文件 @
18f81227
...
...
@@ -90,7 +90,7 @@ func CheckRangeType(startStr string, endStr string, stepStr string) (string, int
if
errInt3
==
nil
{
step
=
stepInt
}
}
else
{
}
else
if
stepStr
==
"r"
{
rand
=
true
}
...
...
@@ -114,7 +114,7 @@ func CheckRangeType(startStr string, endStr string, stepStr string) (string, int
if
errFloat3
==
nil
{
step
=
stepFloat
}
}
else
{
}
else
if
stepStr
==
"r"
{
rand
=
true
}
...
...
@@ -136,12 +136,12 @@ func CheckRangeType(startStr string, endStr string, stepStr string) (string, int
}
else
if
len
(
startStr
)
==
1
&&
len
(
endStr
)
==
1
{
// is char
var
step
interface
{}
=
1
if
st
rings
.
ToLower
(
strings
.
TrimSpace
(
stepStr
))
!=
"r"
{
if
st
epStr
!=
"r"
{
stepChar
,
errChar3
:=
strconv
.
Atoi
(
stepStr
)
if
errChar3
==
nil
{
step
=
stepChar
}
}
else
{
}
else
if
stepStr
==
"r"
{
rand
=
true
}
...
...
@@ -205,7 +205,7 @@ func CreateValuesFromInterval(field *model.DefField, desc, stepStr string, repea
dataType
,
step
,
precision
,
rand
:=
CheckRangeType
(
startStr
,
endStr
,
stepStr
)
if
field
.
Path
!=
""
&&
dataType
!=
"string"
&&
rand
{
if
field
.
Path
!=
""
&&
dataType
!=
"string"
&&
rand
{
// random
items
=
append
(
items
,
Placeholder
(
field
.
Path
))
mp
:=
placeholderMapForRandValues
(
dataType
,
[]
string
{},
startStr
,
endStr
,
stepStr
,
strconv
.
Itoa
(
precision
))
...
...
src/utils/file/file.go
浏览文件 @
18f81227
...
...
@@ -167,10 +167,10 @@ func GetResProp(from string) (resFile, resType, sheet string) { // from resource
}
if
resFile
==
""
{
resPath
:=
vari
.
ConfigDir
+
resFile
resPath
:=
vari
.
ConfigDir
+
from
if
!
FileExist
(
resPath
)
{
// in same folder with passed config file
resPath
=
vari
.
WorkDir
+
resFile
resPath
=
vari
.
WorkDir
+
from
if
!
FileExist
(
resPath
)
{
// in res file
resPath
=
""
}
...
...
@@ -178,6 +178,10 @@ func GetResProp(from string) (resFile, resType, sheet string) { // from resource
resFile
=
resPath
}
if
resFile
==
""
{
color
.
New
(
color
.
FgCyan
)
.
Fprintf
(
color
.
Output
,
i118Utils
.
I118Prt
.
Sprintf
(
"fail_to_find_res"
,
from
)
+
"
\n
"
)
}
return
}
...
...
@@ -208,10 +212,6 @@ func ConvertResYamlPath(from string) (ret string) {
}
}
if
ret
==
""
{
color
.
New
(
color
.
FgCyan
)
.
Fprintf
(
color
.
Output
,
i118Utils
.
I118Prt
.
Sprintf
(
"fail_to_find_res"
,
from
)
+
"
\n
"
)
}
return
}
...
...
src/utils/string/string.go
浏览文件 @
18f81227
...
...
@@ -134,7 +134,7 @@ func StartWith(str, sub string) bool {
return
strings
.
Index
(
str
,
sub
)
==
0
}
func
EndWith
(
str
,
sub
string
)
bool
{
return
strings
.
LastIndex
(
str
,
sub
)
==
len
(
str
)
-
len
(
sub
)
return
strings
.
Contains
(
str
,
sub
)
&&
strings
.
LastIndex
(
str
,
sub
)
==
len
(
str
)
-
len
(
sub
)
}
func
ConvertForSql
(
str
string
)
(
ret
string
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录