From 1dcacc485abb6e57952569303e4794f9d32f2a78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=90=A6?= Date: Tue, 9 Mar 2021 13:51:17 +0800 Subject: [PATCH] update demo --- demo/01_range.yaml | 6 ++ demo/02_fix.yaml | 6 ++ demo/03_more_fields.yaml | 9 +++ demo/04_rand.yaml | 15 +++++ demo/05_loop.yaml | 22 +++++++ demo/06_from_file.yaml | 23 +++++++ demo/07_nest.yaml | 35 +++++++++++ demo/08_format.yaml | 40 ++++++++++++ demo/09_length.yaml | 46 ++++++++++++++ demo/10_brace.yaml | 51 +++++++++++++++ demo/11_loop_m_n.yaml | 22 +++++++ demo/12_function.yaml | 32 ++++++++++ demo/13_value.yaml | 12 ++++ demo/14_config.yaml | 50 +++++++++++++++ demo/14_nest_recursive.yaml | 21 +++++++ demo/15_from_range.yaml | 62 +++++++++++++++++++ demo/16_from_instance.yaml | 21 +++++++ demo/17_multi_from.yaml | 10 +++ demo/18_from_excel.yaml | 27 ++++++++ demo/19_use_results.yaml | 9 +++ demo/20_override_18.yaml | 9 +++ demo/35_color.yaml | 18 ++++++ demo/36_country.yaml | 17 +++++ demo/37_domain.yaml | 15 +++++ demo/38_email.yaml | 13 ++++ demo/39_ip.yaml | 15 +++++ demo/40_name.yaml | 25 ++++++++ demo/41_datetime.yaml | 15 +++++ demo/42_uuid.yaml | 9 +++ demo/{test.yaml => config.yaml} | 0 demo/customer.yaml | 18 ------ demo/default.yaml | 4 +- demo/multi.yaml | 7 +++ demo/sex.txt | 2 - demo/user.txt | 11 ++++ demo/users.txt | 3 - go.mod | 34 ++++++---- go.sum | 50 +++++++++++++++ res/en/messages.json | 2 +- res/en/usage.txt | 4 +- res/zh/messages.json | 2 +- res/zh/usage.txt | 6 +- src/gen/decode.go | 3 +- src/gen/res.go | 8 +-- src/service/view.go | 35 +++++++---- {test => src/test}/unit/mod_test.go | 10 +-- {test => src/test}/unit/pinyin_test.go | 10 +-- {test => src/test}/unit/server_test.go | 2 +- {test => src/test}/ztf/conf/zdata.conf | 0 .../src/advanced/field_buildin_instances.exp | 0 .../src/advanced/field_buildin_instances.php | 0 .../ztf/src/advanced/field_buildin_ranges.exp | 0 .../ztf/src/advanced/field_buildin_ranges.php | 0 .../ztf/src/advanced/field_loop_range.exp | 0 .../ztf/src/advanced/field_loop_range.php | 0 .../ztf/src/advanced/field_overwrite.exp | 0 .../ztf/src/advanced/field_overwrite.php | 0 .../ztf/src/advanced/field_step_negative.exp | 0 .../ztf/src/advanced/field_step_negative.php | 0 .../test}/ztf/src/basic/field_children.exp | 0 .../test}/ztf/src/basic/field_children.php | 0 .../test}/ztf/src/basic/field_common.exp | 0 .../test}/ztf/src/basic/field_common.php | 0 .../ztf/src/basic/field_default_config.exp | 0 .../ztf/src/basic/field_default_config.php | 0 .../test}/ztf/src/basic/field_file.exp | 0 .../test}/ztf/src/basic/field_file.php | 0 .../test}/ztf/src/basic/field_format.exp | 0 .../test}/ztf/src/basic/field_format.php | 0 .../test}/ztf/src/basic/field_loop.exp | 0 .../test}/ztf/src/basic/field_loop.php | 0 .../test}/ztf/src/basic/field_random.exp | 0 .../test}/ztf/src/basic/field_random.php | 0 .../test}/ztf/src/basic/field_repeat.exp | 0 .../test}/ztf/src/basic/field_repeat.php | 0 .../test}/ztf/src/basic/field_step.exp | 0 .../test}/ztf/src/basic/field_step.php | 0 .../test}/ztf/src/basic/field_use_config.exp | 0 .../test}/ztf/src/basic/field_use_config.php | 0 .../test}/ztf/src/basic/field_use_excel.exp | 0 .../test}/ztf/src/basic/field_use_excel.php | 0 .../ztf/src/basic/field_use_instances.exp | 0 .../ztf/src/basic/field_use_instances.php | 0 .../test}/ztf/src/basic/field_use_ranges.exp | 0 .../test}/ztf/src/basic/field_use_ranges.php | 0 {test => src/test}/ztf/src/cmd/cmd_decode.exp | 0 {test => src/test}/ztf/src/cmd/cmd_decode.php | 0 .../test}/ztf/src/cmd/cmd_example.exp | 0 .../test}/ztf/src/cmd/cmd_example.php | 0 {test => src/test}/ztf/src/cmd/cmd_i118.exp | 0 {test => src/test}/ztf/src/cmd/cmd_i118.php | 0 {test => src/test}/ztf/src/cmd/cmd_list.exp | 0 {test => src/test}/ztf/src/cmd/cmd_list.php | 0 {test => src/test}/ztf/src/cmd/cmd_sql.exp | 0 {test => src/test}/ztf/src/cmd/cmd_sql.php | 0 {test => src/test}/ztf/src/cmd/cmd_usage.exp | 0 {test => src/test}/ztf/src/cmd/cmd_usage.php | 0 {test => src/test}/ztf/src/cmd/cmd_view.exp | 0 {test => src/test}/ztf/src/cmd/cmd_view.php | 0 {test => src/test}/ztf/src/lib/config.php | 0 {test => src/test}/ztf/src/lib/debug.php | 0 {test => src/test}/ztf/src/lib/utils.php | 0 {test => src/test}/ztf/src/lib/zd.php | 0 .../test}/ztf/src/output/out_json.exp | 0 .../test}/ztf/src/output/out_json.php | 0 {test => src/test}/ztf/src/output/out_sql.exp | 0 {test => src/test}/ztf/src/output/out_sql.php | 0 {test => src/test}/ztf/src/output/out_txt.exp | 0 {test => src/test}/ztf/src/output/out_txt.php | 0 {test => src/test}/ztf/src/output/out_xml.exp | 0 {test => src/test}/ztf/src/output/out_xml.php | 0 .../ztf/src/service/svc_default_config.exp | 0 .../ztf/src/service/svc_default_config.php | 0 .../test}/ztf/src/service/svc_post.exp | 0 .../test}/ztf/src/service/svc_post.php | 0 .../test}/ztf/src/service/svc_root.exp | 0 .../test}/ztf/src/service/svc_root.php | 0 src/utils/file/file.go | 21 ++++--- {demo/test => test}/test-account.yaml | 0 {demo/test => test}/test-color.yaml | 0 {demo/test => test}/test-country.yaml | 0 {demo/test => test}/test-datetime.yaml | 0 {demo/test => test}/test-domain.yaml | 0 {demo/test => test}/test-email.yaml | 0 {demo/test => test}/test-format.yaml | 0 {demo/test => test}/test-ip.yaml | 0 {demo/test => test}/test-nested.yaml | 0 {demo/test => test}/test-nested1.yaml | 0 {demo/test => test}/test-nested2.yaml | 0 {demo/test => test}/test-range.yaml | 0 {demo/test => test}/test-recursice.yaml | 0 {demo/test => test}/test-uuid.yaml | 0 ui/src/locales/lang/zh-CN.js | 2 +- 133 files changed, 805 insertions(+), 84 deletions(-) create mode 100644 demo/01_range.yaml create mode 100644 demo/02_fix.yaml create mode 100644 demo/03_more_fields.yaml create mode 100644 demo/04_rand.yaml create mode 100644 demo/05_loop.yaml create mode 100644 demo/06_from_file.yaml create mode 100644 demo/07_nest.yaml create mode 100644 demo/08_format.yaml create mode 100644 demo/09_length.yaml create mode 100644 demo/10_brace.yaml create mode 100644 demo/11_loop_m_n.yaml create mode 100644 demo/12_function.yaml create mode 100644 demo/13_value.yaml create mode 100644 demo/14_config.yaml create mode 100644 demo/14_nest_recursive.yaml create mode 100644 demo/15_from_range.yaml create mode 100644 demo/16_from_instance.yaml create mode 100644 demo/17_multi_from.yaml create mode 100644 demo/18_from_excel.yaml create mode 100644 demo/19_use_results.yaml create mode 100644 demo/20_override_18.yaml create mode 100644 demo/35_color.yaml create mode 100644 demo/36_country.yaml create mode 100644 demo/37_domain.yaml create mode 100644 demo/38_email.yaml create mode 100644 demo/39_ip.yaml create mode 100644 demo/40_name.yaml create mode 100644 demo/41_datetime.yaml create mode 100644 demo/42_uuid.yaml rename demo/{test.yaml => config.yaml} (100%) delete mode 100644 demo/customer.yaml create mode 100644 demo/multi.yaml delete mode 100644 demo/sex.txt create mode 100644 demo/user.txt delete mode 100644 demo/users.txt rename {test => src/test}/unit/mod_test.go (80%) rename {test => src/test}/unit/pinyin_test.go (88%) rename {test => src/test}/unit/server_test.go (99%) rename {test => src/test}/ztf/conf/zdata.conf (100%) rename {test => src/test}/ztf/src/advanced/field_buildin_instances.exp (100%) rename {test => src/test}/ztf/src/advanced/field_buildin_instances.php (100%) rename {test => src/test}/ztf/src/advanced/field_buildin_ranges.exp (100%) rename {test => src/test}/ztf/src/advanced/field_buildin_ranges.php (100%) rename {test => src/test}/ztf/src/advanced/field_loop_range.exp (100%) rename {test => src/test}/ztf/src/advanced/field_loop_range.php (100%) rename {test => src/test}/ztf/src/advanced/field_overwrite.exp (100%) rename {test => src/test}/ztf/src/advanced/field_overwrite.php (100%) rename {test => src/test}/ztf/src/advanced/field_step_negative.exp (100%) rename {test => src/test}/ztf/src/advanced/field_step_negative.php (100%) rename {test => src/test}/ztf/src/basic/field_children.exp (100%) rename {test => src/test}/ztf/src/basic/field_children.php (100%) rename {test => src/test}/ztf/src/basic/field_common.exp (100%) rename {test => src/test}/ztf/src/basic/field_common.php (100%) rename {test => src/test}/ztf/src/basic/field_default_config.exp (100%) rename {test => src/test}/ztf/src/basic/field_default_config.php (100%) rename {test => src/test}/ztf/src/basic/field_file.exp (100%) rename {test => src/test}/ztf/src/basic/field_file.php (100%) rename {test => src/test}/ztf/src/basic/field_format.exp (100%) rename {test => src/test}/ztf/src/basic/field_format.php (100%) rename {test => src/test}/ztf/src/basic/field_loop.exp (100%) rename {test => src/test}/ztf/src/basic/field_loop.php (100%) rename {test => src/test}/ztf/src/basic/field_random.exp (100%) rename {test => src/test}/ztf/src/basic/field_random.php (100%) rename {test => src/test}/ztf/src/basic/field_repeat.exp (100%) rename {test => src/test}/ztf/src/basic/field_repeat.php (100%) rename {test => src/test}/ztf/src/basic/field_step.exp (100%) rename {test => src/test}/ztf/src/basic/field_step.php (100%) rename {test => src/test}/ztf/src/basic/field_use_config.exp (100%) rename {test => src/test}/ztf/src/basic/field_use_config.php (100%) rename {test => src/test}/ztf/src/basic/field_use_excel.exp (100%) rename {test => src/test}/ztf/src/basic/field_use_excel.php (100%) rename {test => src/test}/ztf/src/basic/field_use_instances.exp (100%) rename {test => src/test}/ztf/src/basic/field_use_instances.php (100%) rename {test => src/test}/ztf/src/basic/field_use_ranges.exp (100%) rename {test => src/test}/ztf/src/basic/field_use_ranges.php (100%) rename {test => src/test}/ztf/src/cmd/cmd_decode.exp (100%) rename {test => src/test}/ztf/src/cmd/cmd_decode.php (100%) rename {test => src/test}/ztf/src/cmd/cmd_example.exp (100%) rename {test => src/test}/ztf/src/cmd/cmd_example.php (100%) rename {test => src/test}/ztf/src/cmd/cmd_i118.exp (100%) rename {test => src/test}/ztf/src/cmd/cmd_i118.php (100%) rename {test => src/test}/ztf/src/cmd/cmd_list.exp (100%) rename {test => src/test}/ztf/src/cmd/cmd_list.php (100%) rename {test => src/test}/ztf/src/cmd/cmd_sql.exp (100%) rename {test => src/test}/ztf/src/cmd/cmd_sql.php (100%) rename {test => src/test}/ztf/src/cmd/cmd_usage.exp (100%) rename {test => src/test}/ztf/src/cmd/cmd_usage.php (100%) rename {test => src/test}/ztf/src/cmd/cmd_view.exp (100%) rename {test => src/test}/ztf/src/cmd/cmd_view.php (100%) rename {test => src/test}/ztf/src/lib/config.php (100%) rename {test => src/test}/ztf/src/lib/debug.php (100%) rename {test => src/test}/ztf/src/lib/utils.php (100%) rename {test => src/test}/ztf/src/lib/zd.php (100%) rename {test => src/test}/ztf/src/output/out_json.exp (100%) rename {test => src/test}/ztf/src/output/out_json.php (100%) rename {test => src/test}/ztf/src/output/out_sql.exp (100%) rename {test => src/test}/ztf/src/output/out_sql.php (100%) rename {test => src/test}/ztf/src/output/out_txt.exp (100%) rename {test => src/test}/ztf/src/output/out_txt.php (100%) rename {test => src/test}/ztf/src/output/out_xml.exp (100%) rename {test => src/test}/ztf/src/output/out_xml.php (100%) rename {test => src/test}/ztf/src/service/svc_default_config.exp (100%) rename {test => src/test}/ztf/src/service/svc_default_config.php (100%) rename {test => src/test}/ztf/src/service/svc_post.exp (100%) rename {test => src/test}/ztf/src/service/svc_post.php (100%) rename {test => src/test}/ztf/src/service/svc_root.exp (100%) rename {test => src/test}/ztf/src/service/svc_root.php (100%) rename {demo/test => test}/test-account.yaml (100%) rename {demo/test => test}/test-color.yaml (100%) rename {demo/test => test}/test-country.yaml (100%) rename {demo/test => test}/test-datetime.yaml (100%) rename {demo/test => test}/test-domain.yaml (100%) rename {demo/test => test}/test-email.yaml (100%) rename {demo/test => test}/test-format.yaml (100%) rename {demo/test => test}/test-ip.yaml (100%) rename {demo/test => test}/test-nested.yaml (100%) rename {demo/test => test}/test-nested1.yaml (100%) rename {demo/test => test}/test-nested2.yaml (100%) rename {demo/test => test}/test-range.yaml (100%) rename {demo/test => test}/test-recursice.yaml (100%) rename {demo/test => test}/test-uuid.yaml (100%) diff --git a/demo/01_range.yaml b/demo/01_range.yaml new file mode 100644 index 00000000..ccd514da --- /dev/null +++ b/demo/01_range.yaml @@ -0,0 +1,6 @@ +title: range +desc: 描述 +version: 1.0 +fields: + - field: first # 字段名 + range: 1-5, 30 # 1,2,3,4,5,30,1,2,3,4,5 diff --git a/demo/02_fix.yaml b/demo/02_fix.yaml new file mode 100644 index 00000000..80a29a24 --- /dev/null +++ b/demo/02_fix.yaml @@ -0,0 +1,6 @@ +title: 增加后缀 +fields: + - field: fix # 字段名 + range: 1-5, 30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: " | " # 后缀,特殊字符加引号,否则无法解析。 diff --git a/demo/03_more_fields.yaml b/demo/03_more_fields.yaml new file mode 100644 index 00000000..dc792e69 --- /dev/null +++ b/demo/03_more_fields.yaml @@ -0,0 +1,9 @@ +fields: + - field: field_common # 字段名 + range: 1-5, 30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: "\t" # 后缀,特殊字符加引号,否则无法解析。 + + - field: field_step # 区间指定步长。 + range: 0-10:2, 1-2:0.1 # 步长可以是整数,也可以是小数。 + postfix: "\t" diff --git a/demo/04_rand.yaml b/demo/04_rand.yaml new file mode 100644 index 00000000..b42298b7 --- /dev/null +++ b/demo/04_rand.yaml @@ -0,0 +1,15 @@ +version: 1.0 +fields: + - field: field_common # 字段名 + range: 1-5, 30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: "\t" # 后缀,特殊字符加引号,否则无法解析。 + + - field: field_step # 区间指定步长。 + range: 0-10:2, 1-2:0.1 # 步长可以是整数,也可以是小数。 + postfix: "\t" + + - field: field_random # 区间指定随机。随机属性R同步长不能同时出现。 + range: 1-10:R # 1,5,8... + postfix: "\t" + diff --git a/demo/05_loop.yaml b/demo/05_loop.yaml new file mode 100644 index 00000000..9116658a --- /dev/null +++ b/demo/05_loop.yaml @@ -0,0 +1,22 @@ +fields: + - field: field_common # 字段名 + range: 1-5, 30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: "\t" # 后缀,特殊字符加引号,否则无法解析。 + + - field: field_step # 区间指定步长。 + range: 0-10:2, 1-2:0.1 # 步长可以是整数,也可以是小数。 + postfix: "\t" + + - field: field_random # 区间指定随机。随机属性R同步长不能同时出现。 + range: 1-10:R # 1,5,8... + postfix: "\t" + + - field: field_loop # 自循环的字段。 + range: a-z # a|b|c ... + loop: 3 # 循环三次 + loopfix: _ # 每次循环的连接符。 + postfix: "\t" + + + diff --git a/demo/06_from_file.yaml b/demo/06_from_file.yaml new file mode 100644 index 00000000..3f0a6364 --- /dev/null +++ b/demo/06_from_file.yaml @@ -0,0 +1,23 @@ +fields: + - field: field_common # 字段名 + range: 1-5,30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: "\t" # 后缀,特殊字符加引号,否则无法解析。 + + - field: field_step # 区间指定步长。 + range: 0-10:2, 1-2:0.1 # 步长可以是整数,也可以是小数。 + postfix: "\t" + + - field: field_random # 区间指定随机。随机属性R同步长不能同时出现。 + range: 1-10:R # 1,5,8... + postfix: "\t" + + - field: field_loop # 自循环的字段。 + range: a-z # a|b|c ... + loop: 3 # 循环三次 + loopfix: _ # 每次循环的连接符。 + postfix: "\t" + + - field: field_text # 从一个文件中随机读取。 + range: user.txt:R # 相对当前文件路径。 + postfix: "\t" diff --git a/demo/07_nest.yaml b/demo/07_nest.yaml new file mode 100644 index 00000000..844943b4 --- /dev/null +++ b/demo/07_nest.yaml @@ -0,0 +1,35 @@ +fields: + - field: field_common # 字段名 + range: 1-5,30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: "\t" # 后缀,特殊字符加引号,否则无法解析。 + + - field: field_step # 区间指定步长。 + range: 0-10:2, 1-2:0.1 # 步长可以是整数,也可以是小数。 + postfix: "\t" + + - field: field_random # 区间指定随机。随机属性R同步长不能同时出现。 + range: 1-10:R # 1,5,8... + postfix: "\t" + + - field: field_loop # 自循环的字段。 + range: a-z # a|b|c ... + loop: 3 # 循环三次 + loopfix: _ # 每次循环的连接符。 + postfix: "\t" + + - field: field_text # 从一个文件中随机读取。 + range: user.txt:R # 相对当前文件路径。 + postfix: "\t" + + - field: nesting # 字段多层嵌套 + fields: + - field: child1 + range: a-z + prefix: part1_ + postfix: '|' + + - field: child2 + range: A-Z + prefix: part2_ + postfix: '|' diff --git a/demo/08_format.yaml b/demo/08_format.yaml new file mode 100644 index 00000000..35803fbe --- /dev/null +++ b/demo/08_format.yaml @@ -0,0 +1,40 @@ +fields: + - field: field_common # 字段名 + range: 1-5,30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: "\t" # 后缀,特殊字符加引号,否则无法解析。 + + - field: field_step # 区间指定步长。 + range: 0-10:2, 1-2:0.1 # 步长可以是整数,也可以是小数。 + postfix: "\t" + + - field: field_random # 区间指定随机。随机属性R同步长不能同时出现。 + range: 1-10:R # 1,5,8... + postfix: "\t" + + - field: field_loop # 自循环的字段。 + range: a-z # a|b|c ... + loop: 3 # 循环三次 + loopfix: _ # 每次循环的连接符。 + postfix: "\t" + + - field: field_text # 从一个文件中随机读取。 + range: user.txt:R # 相对当前文件路径。 + postfix: "\t" + + - field: nesting # 字段多层嵌套 + fields: + - field: child1 + range: a-z + prefix: part1_ + postfix: '|' + + - field: child2 + range: A-Z + prefix: part2_ + postfix: "\t" + + - field: field_format # 通过格式化字符串输出。 + range: 1-10 # passwd 1,passwd 2,passwd 3 ... passwd10。 + format: "passwd%02d" # 用%02d补零,使密码整体保持8位。 + postfix: "\t" diff --git a/demo/09_length.yaml b/demo/09_length.yaml new file mode 100644 index 00000000..07e94542 --- /dev/null +++ b/demo/09_length.yaml @@ -0,0 +1,46 @@ +fields: + - field: field_common # 字段名 + range: 1-5,30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: "\t" # 后缀,特殊字符加引号,否则无法解析。 + + - field: field_step # 区间指定步长。 + range: 0-10:2, 1-2:0.1 # 步长可以是整数,也可以是小数。 + postfix: "\t" + + - field: field_random # 区间指定随机。随机属性R同步长不能同时出现。 + range: 1-10:R # 1,5,8... + postfix: "\t" + + - field: field_loop # 自循环的字段。 + range: a-z # a|b|c ... + loop: 3 # 循环三次 + loopfix: _ # 每次循环的连接符。 + postfix: "\t" + + - field: field_text # 从一个文件中随机读取。 + range: user.txt:R # 相对当前文件路径。 + postfix: "\t" + + - field: nesting # 字段多层嵌套 + fields: + - field: child1 + range: a-z + prefix: part1_ + postfix: '|' + + - field: child2 + range: A-Z + prefix: part2_ + postfix: "\t" + + - field: field_format # 通过格式化字符串输出。 + range: 1-10 # passwd 1,passwd 2,passwd 3 ... passwd10。 + format: "passwd%02d" # 用%02d补零,使密码整体保持8位。 + postfix: "\t" + + - field: field_length # 指定宽度。 + range: 1-99 # 01\t,02\t,03\t..., 99\t + length: 3 # 包含前后缀的宽度。 + leftpad: 0 # 宽度不够时,补充的字符。 + postfix: "\t" diff --git a/demo/10_brace.yaml b/demo/10_brace.yaml new file mode 100644 index 00000000..10be1a86 --- /dev/null +++ b/demo/10_brace.yaml @@ -0,0 +1,51 @@ +fields: + - field: field_common # 字段名 + range: 1-5,30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: "\t" # 后缀,特殊字符加引号,否则无法解析。 + + - field: field_step # 区间指定步长。 + range: 0-10:2, 1-2:0.1 # 步长可以是整数,也可以是小数。 + postfix: "\t" + + - field: field_random # 区间指定随机。随机属性R同步长不能同时出现。 + range: 1-10:R # 1,5,8... + postfix: "\t" + + - field: field_loop # 自循环的字段。 + range: a-z # a|b|c ... + loop: 3 # 循环三次 + loopfix: _ # 每次循环的连接符。 + postfix: "\t" + + - field: field_text # 从一个文件中随机读取。 + range: user.txt:R # 相对当前文件路径。 + postfix: "\t" + + - field: nesting # 字段多层嵌套 + fields: + - field: child1 + range: a-z + prefix: part1_ + postfix: '|' + + - field: child2 + range: A-Z + prefix: part2_ + postfix: "\t" + + - field: field_format # 通过格式化字符串输出。 + range: 1-10 # passwd 1,passwd 2,passwd 3 ... passwd10。 + format: "passwd%02d" # 用%02d补零,使密码整体保持8位。 + postfix: "\t" + + - field: field_length # 指定宽度。 + range: 1-99 # 01\t,02\t,03\t..., 99\t + length: 3 # 包含前后缀的宽度。 + leftpad: 0 # 宽度不够时,补充的字符。 + postfix: "\t" + + - field: field_brace # 通过{}定义重复的元素。 + range: a{3},[b,c]{3} # a,a,a,b,b,b,c,c,c + postfix: "\t" + diff --git a/demo/11_loop_m_n.yaml b/demo/11_loop_m_n.yaml new file mode 100644 index 00000000..ba74a5a1 --- /dev/null +++ b/demo/11_loop_m_n.yaml @@ -0,0 +1,22 @@ +fields: + - field: field_common # 字段名 + range: 1-5, 30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: "\t" # 后缀,特殊字符加引号,否则无法解析。 + + - field: field_step # 区间指定步长。 + range: 0-10:2, 1-2:0.1 # 步长可以是整数,也可以是小数。 + postfix: "\t" + + - field: field_random # 区间指定随机。随机属性R同步长不能同时出现。 + range: 1-10:R # 1,5,8... + postfix: "\t" + + - field: field_loop # 自循环的字段。 + range: a-z # a|b|c ... + loop: 1-10 # 循环1次,2次…… + loopfix: _ # 每次循环的连接符。 + postfix: "\t" + + + diff --git a/demo/12_function.yaml b/demo/12_function.yaml new file mode 100644 index 00000000..baabc135 --- /dev/null +++ b/demo/12_function.yaml @@ -0,0 +1,32 @@ +fields: + - field: field_1 + range: 10-20 + postfix: " " + + - field: field_1_md5 + range: 10-20 + format: md5 + prefix: "md5: " + postfix: " " + + - field: field_2_sha1 + range: 10-20 + format: sha1 + prefix: "sha1: " + postfix: " " + + - field: field_3_base64 + range: 10-20 + format: base64 + prefix: "base64: " + postfix: "\t" + + - field: field_4 + range: 壹,贰,叁,肆,伍,陆,柒,捌,玖,拾 + postfix: "\t" + + - field: field_4_urlencode + range: 壹,贰,叁,肆,伍,陆,柒,捌,玖,拾 + format: urlencode + prefix: "urlencode: " + postfix: "\t" diff --git a/demo/13_value.yaml b/demo/13_value.yaml new file mode 100644 index 00000000..63bd5c33 --- /dev/null +++ b/demo/13_value.yaml @@ -0,0 +1,12 @@ +fields: + - field: first + range: [1-9]{9} + prefix: ' ' + postfix: ' x ' + + - field: second + range: 1-9 + postfix: ' = ' + + - field: result + value: "$first * $second" diff --git a/demo/14_config.yaml b/demo/14_config.yaml new file mode 100644 index 00000000..9f529beb --- /dev/null +++ b/demo/14_config.yaml @@ -0,0 +1,50 @@ +fields: + - field: field_common # 字段名 + range: 1-5,30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: "\t" # 后缀,特殊字符加引号,否则无法解析。 + + - field: field_step # 区间指定步长。 + range: 0-10:2, 1-2:0.1 # 步长可以是整数,也可以是小数。 + postfix: "\t" + + - field: field_random # 区间指定随机。随机属性R同步长不能同时出现。 + range: 1-10:R # 1,5,8... + postfix: "\t" + + - field: field_loop # 自循环的字段。 + range: a-z # a|b|c ... + loop: 3 # 循环三次 + loopfix: _ # 每次循环的连接符。 + postfix: "\t" + + - field: field_text # 从一个文件中随机读取。 + range: user.txt:R # 相对当前文件路径。 + postfix: "\t" + + - field: nesting # 字段多层嵌套 + fields: + - field: child1 + range: a-z + prefix: part1_ + postfix: '|' + + - field: child2 + range: A-Z + prefix: part2_ + postfix: "\t" + + - field: field_format # 通过格式化字符串输出。 + range: 1-10 # passwd 1,passwd 2,passwd 3 ... passwd10。 + format: "passwd%02d" # 用%02d补零,使密码整体保持8位。 + postfix: "\t" + + - field: field_length # 指定宽度。 + range: 1-99 # 01\t,02\t,03\t..., 99\t + length: 3 # 包含前后缀的宽度。 + leftpad: 0 # 宽度不够时,补充的字符。 + postfix: "\t" + + - field: field_use_config # 引用其他的config定义文件。 + config: number.yaml # 相对当前文件路径,config内包含单个字段。 + postfix: "\t" diff --git a/demo/14_nest_recursive.yaml b/demo/14_nest_recursive.yaml new file mode 100644 index 00000000..ffa7ccb4 --- /dev/null +++ b/demo/14_nest_recursive.yaml @@ -0,0 +1,21 @@ +fields: + - field: nesting + fields: + - field: child1 + range: 1-3 + postfix: '_' + + - field: child2 + range: A-C + postfix: "\t" + + - field: nesting_r + mode: r + fields: + - field: child1 + range: 1-3 + postfix: '_' + + - field: child2 + range: A-C + postfix: "\t" diff --git a/demo/15_from_range.yaml b/demo/15_from_range.yaml new file mode 100644 index 00000000..2af2eb14 --- /dev/null +++ b/demo/15_from_range.yaml @@ -0,0 +1,62 @@ +fields: + - field: field_common # 字段名 + range: 1-5,30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: "\t" # 后缀,特殊字符加引号,否则无法解析。 + + - field: field_step # 区间指定步长。 + range: 0-10:2, 1-2:0.1 # 步长可以是整数,也可以是小数。 + postfix: "\t" + + - field: field_random # 区间指定随机。随机属性R同步长不能同时出现。 + range: 1-10:R # 1,5,8... + postfix: "\t" + + - field: field_loop # 自循环的字段。 + range: a-z # a|b|c ... + loop: 3 # 循环三次 + loopfix: _ # 每次循环的连接符。 + postfix: "\t" + + - field: field_text # 从一个文件中随机读取。 + range: user.txt:R # 相对当前文件路径。 + postfix: "\t" + + - field: nesting # 字段多层嵌套 + fields: + - field: child1 + range: a-z + prefix: part1_ + postfix: '|' + + - field: child2 + range: A-Z + prefix: part2_ + postfix: "\t" + + - field: field_format # 通过格式化字符串输出。 + range: 1-10 # passwd 1,passwd 2,passwd 3 ... passwd10。 + format: "passwd%02d" # 用%02d补零,使密码整体保持8位。 + postfix: "\t" + + - field: field_length # 指定宽度。 + range: 1-99 # 01\t,02\t,03\t..., 99\t + length: 3 # 包含前后缀的宽度。 + leftpad: 0 # 宽度不够时,补充的字符。 + postfix: "\t" + + - field: field_use_config # 引用其他的config定义文件。 + config: number.yaml # 相对当前文件路径,config内包含单个字段。 + postfix: "\t" + + - field: field_use_ranges_small # 引用內置的定义文件,该文件定义了多个range + from: zentao.number.v1.yaml # 引用yaml/zentao/number/v1.yaml文件里面的ranges定义。 + use: small # 使用该文件中定义的small分组。 + postfix: "\t" + + - field: field_use_ranges_medium + from: zentao.number.v1.yaml + use: medium{4} # 使用该文件中定义的medium分组。 + postfix: "\t" + + diff --git a/demo/16_from_instance.yaml b/demo/16_from_instance.yaml new file mode 100644 index 00000000..f24b72d8 --- /dev/null +++ b/demo/16_from_instance.yaml @@ -0,0 +1,21 @@ +fields: + - field: field_common # 字段名 + range: 1-5,30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: "\t" # 后缀,特殊字符加引号,否则无法解析。 + + - field: field_use_config # 引用其他的config定义文件。 + config: number.yaml # 相对当前文件路径,config内包含单个字段。 + postfix: "\t" + + - field: field_use_ranges # 引用內置的定义文件,该文件定义了多个range + from: zentao.number.v1.yaml # 引用yaml/zentao/number/v1.yaml文件里面的ranges定义。 + use: medium # 使用该文件中定义的medium分组。 + postfix: "\t" + + - field: field_use_instance # 引用其他的定义文件,该文件定义了多个实例。 + from: ip.v1.yaml # yaml/ip/v1.yaml + use: privateB{5} # 使用该文件中定义的privateC和privateB两个实例。 + postfix: "\t" + + diff --git a/demo/17_multi_from.yaml b/demo/17_multi_from.yaml new file mode 100644 index 00000000..f4c6ccae --- /dev/null +++ b/demo/17_multi_from.yaml @@ -0,0 +1,10 @@ +fields: + - field: use_mutiple_instances + prefix: ' ' + froms: + - from: ip.v1.yaml + use: privateB{10} + - from: ip.v2.yaml + use: ipA{10} + + diff --git a/demo/18_from_excel.yaml b/demo/18_from_excel.yaml new file mode 100644 index 00000000..1b1547d3 --- /dev/null +++ b/demo/18_from_excel.yaml @@ -0,0 +1,27 @@ +fields: + - field: field_common # 字段名 + range: 1-5,30 # 1,2,3,4,5,30,1,2,3,4,5 + prefix: "int_" # 前缀 + postfix: "\t" # 后缀,特殊字符加引号,否则无法解析。 + + - field: field_use_config # 引用其他的config定义文件。 + config: number.yaml # 相对当前文件路径,config内包含单个字段。 + postfix: "\t" + + - field: field_use_ranges # 引用內置的定义文件,该文件定义了多个range + from: zentao.number.v1.yaml # 引用yaml/zentao/number/v1.yaml文件里面的ranges定义。 + use: medium # 使用该文件中定义的medium分组。 + postfix: "\t" + + - field: field_use_instance # 引用其他的定义文件,该文件定义了多个实例。 + from: ip.v1.yaml # yaml/ip/v1.yaml + use: privateC,privateB # 使用该文件中定义的privateC和privateB两个实例。 + postfix: "\t" + + - field: field_use_excel # 从excel数据源里面取数据。 + from: address.cn.v1.china # 从data/address/v1.xlsx文件中读取名为china的工作簿。 + select: city # 查询city字段。 + where: state like '%山东%' # 条件是省份包含山东。 + rand: true # 随机取数据 + postfix: "\t" + diff --git a/demo/19_use_results.yaml b/demo/19_use_results.yaml new file mode 100644 index 00000000..8aea8d67 --- /dev/null +++ b/demo/19_use_results.yaml @@ -0,0 +1,9 @@ +fields: + - field: first + range: 16_from_instance.yaml{10} + prefix: "From 16.yaml\t" + postfix: "\t|\t" + + - field: second + range: 17_from_excel.yaml{5} + prefix: "From 17.yaml: \t" diff --git a/demo/20_override_18.yaml b/demo/20_override_18.yaml new file mode 100644 index 00000000..336fbfce --- /dev/null +++ b/demo/20_override_18.yaml @@ -0,0 +1,9 @@ +fields: + - field: second + range: 100-200 + prefix: " I override 18: " + postfix: "\t" + + - field: third + range: A-Z + prefix: "I'm a new field: " diff --git a/demo/35_color.yaml b/demo/35_color.yaml new file mode 100644 index 00000000..99b64631 --- /dev/null +++ b/demo/35_color.yaml @@ -0,0 +1,18 @@ +from: color.v1.yaml +fields: + - field: rgb + use: rgb + prefix: 'rgb: ' + postfix: "\t" + - field: hex + use: hex + prefix: 'hex: ' + postfix: "\t" + - field: english + use: english + prefix: 'english: ' + postfix: "\t" + - field: chinese + use: chinese + prefix: 'chinese: ' + postfix: "\t" diff --git a/demo/36_country.yaml b/demo/36_country.yaml new file mode 100644 index 00000000..e68594c8 --- /dev/null +++ b/demo/36_country.yaml @@ -0,0 +1,17 @@ +from: country.v1.yaml +fields: + - field: cnfull + use: cnfull + prefix: 'cnfull: ' + postfix: "\t" + + - field: cnshort + use: cnshort + prefix: 'cnshort: ' + postfix: "\t" + + - field: asia_enfull + use: asia_enfull + prefix: 'asia_enfull: ' + postfix: "\t" + diff --git a/demo/37_domain.yaml b/demo/37_domain.yaml new file mode 100644 index 00000000..3f68d6e0 --- /dev/null +++ b/demo/37_domain.yaml @@ -0,0 +1,15 @@ +fields: + - field: mixed_at_common + from: domain.domain.v1.yaml + use: mixed_at_common + postfix: "\t" + + - field: enaccount_at_common + from: domain.domain.v1.yaml + use: enaccount_at_common + postfix: "\t" + + - field: cnaccount_at_cn + from: domain.domain.v1.yaml + use: cnaccount_at_cn + postfix: "\t" diff --git a/demo/38_email.yaml b/demo/38_email.yaml new file mode 100644 index 00000000..632321c6 --- /dev/null +++ b/demo/38_email.yaml @@ -0,0 +1,13 @@ +from: email.v1.yaml +fields: + - field: number_with_esp + use: number_with_esp + postfix: "\t" + + - field: western_with_esp + use: western_with_esp + postfix: "\t" + + - field: pinyin_with_self + use: pinyin_with_self + postfix: "\t" diff --git a/demo/39_ip.yaml b/demo/39_ip.yaml new file mode 100644 index 00000000..0b13b736 --- /dev/null +++ b/demo/39_ip.yaml @@ -0,0 +1,15 @@ +from: ip.v1.yaml +fields: + - field: privateA + use: privateA + postfix: "\t" + + - field: privateB + use: privateB + postfix: "\t" + + - field: privateC + use: privateC + postfix: "\t" + + diff --git a/demo/40_name.yaml b/demo/40_name.yaml new file mode 100644 index 00000000..52075388 --- /dev/null +++ b/demo/40_name.yaml @@ -0,0 +1,25 @@ +fields: + - field: cnaccount + from: name.cnaccount.v1.yaml + use: common + postfix: "\t" + + - field: two_chinese_name + from: name.cnreal.v1.yaml + use: two + postfix: "\t" + + - field: three_chinese_name + from: name.cnreal.v1.yaml + use: three + postfix: "\t" + + - field: four_chinese_name + from: name.cnreal.v1.yaml + use: four + postfix: "\t" + + - field: english + from: name.enaccount.v1.yaml + use: common_underline + postfix: "\t" diff --git a/demo/41_datetime.yaml b/demo/41_datetime.yaml new file mode 100644 index 00000000..d78c613a --- /dev/null +++ b/demo/41_datetime.yaml @@ -0,0 +1,15 @@ +fields: + - field: date + from: time.date.v1.yaml + use: date + postfix: " " + + - field: cn_date + from: time.date.v1.yaml + use: chinese + postfix: " " + + - field: time + from: time.time.v1.yaml + use: time + postfix: " " diff --git a/demo/42_uuid.yaml b/demo/42_uuid.yaml new file mode 100644 index 00000000..00e0291d --- /dev/null +++ b/demo/42_uuid.yaml @@ -0,0 +1,9 @@ +from: uuid.v1.yaml +fields: + - field: length32_random_no_separator + use: length32_random_no_separator + postfix: " " + + - field: length16 + use: length16 + postfix: " " diff --git a/demo/test.yaml b/demo/config.yaml similarity index 100% rename from demo/test.yaml rename to demo/config.yaml diff --git a/demo/customer.yaml b/demo/customer.yaml deleted file mode 100644 index 29770e02..00000000 --- a/demo/customer.yaml +++ /dev/null @@ -1,18 +0,0 @@ -title: -desc: -author: -version: 1.0 - -fields: - - field: t1 - range: a-z - postfix: "\t" - - - field: WC_SEX - range: sex.txt - #rand: true - postfix: "\t" - - - field: t2 - range: 1-9 - postfix: "\t" \ No newline at end of file diff --git a/demo/default.yaml b/demo/default.yaml index 87c0efa5..2b66612c 100644 --- a/demo/default.yaml +++ b/demo/default.yaml @@ -94,10 +94,10 @@ fields: postfix: "\t" - field: field_length # 指定宽度。 - range: 1-99 # 001\n,002\n,003\n..., 099\n + range: 1-99 # 01\t,02\t,03\t..., 99\t length: 3 # 包含前后缀的宽度。 leftpad: 0 # 宽度不够时,补充的字符。 - postfix: "-" + postfix: "\t" - field: field_text # 从一个文件中随机读取。 range: users.txt:R # 相对当前文件路径。 diff --git a/demo/multi.yaml b/demo/multi.yaml new file mode 100644 index 00000000..faa12d03 --- /dev/null +++ b/demo/multi.yaml @@ -0,0 +1,7 @@ +title: number +desc: +author: wwccss +version: 1.0 +fields: + - field: number + range: 1-9 diff --git a/demo/sex.txt b/demo/sex.txt deleted file mode 100644 index 594a5ee6..00000000 --- a/demo/sex.txt +++ /dev/null @@ -1,2 +0,0 @@ -男 -女 \ No newline at end of file diff --git a/demo/user.txt b/demo/user.txt new file mode 100644 index 00000000..418f6326 --- /dev/null +++ b/demo/user.txt @@ -0,0 +1,11 @@ +Tom +John +Rose +Jack +Charles +Mark +Bill +Vincent +William +Jseph +James diff --git a/demo/users.txt b/demo/users.txt deleted file mode 100644 index 27c0d34d..00000000 --- a/demo/users.txt +++ /dev/null @@ -1,3 +0,0 @@ -aaron -ben -carl diff --git a/go.mod b/go.mod index 9b0af238..0bad464b 100644 --- a/go.mod +++ b/go.mod @@ -2,13 +2,14 @@ module github.com/easysoft/zendata go 1.12 -require golang.org/x/text v0.3.4 +require golang.org/x/text v0.3.5 require ( - github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.1 + github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.2 github.com/Chain-Zhang/pinyin v0.1.3 github.com/Knetic/govaluate v3.0.0+incompatible github.com/akavel/rsrc v0.9.0 // indirect + github.com/andybalholm/brotli v1.0.1 // indirect github.com/denisenkom/go-mssqldb v0.9.0 // indirect github.com/elazarl/go-bindata-assetfs v1.0.1 github.com/emirpasic/gods v1.12.0 @@ -16,32 +17,39 @@ require ( github.com/go-bindata/go-bindata v3.1.2+incompatible // indirect github.com/go-playground/validator/v10 v10.4.1 // indirect github.com/golang/protobuf v1.4.3 // indirect - github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect - github.com/jinzhu/copier v0.1.0 + github.com/golang/snappy v0.0.3 // indirect + github.com/gopherjs/gopherjs v0.0.0-20210202160940-bed99a852dfe // indirect + github.com/jinzhu/copier v0.2.5 github.com/jinzhu/gorm v1.9.16 github.com/jinzhu/now v1.1.1 // indirect github.com/json-iterator/go v1.1.10 // indirect github.com/jteeuwen/go-bindata v3.0.7+incompatible // indirect + github.com/klauspost/compress v1.11.12 // indirect + github.com/klauspost/pgzip v1.2.5 // indirect github.com/kr/text v0.2.0 // indirect - github.com/lib/pq v1.8.0 // indirect - github.com/mattn/go-runewidth v0.0.9 + github.com/lib/pq v1.10.0 // indirect + github.com/mattn/go-runewidth v0.0.10 github.com/mattn/go-sqlite3 v2.0.3+incompatible github.com/mholt/archiver/v3 v3.5.0 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.1 // indirect github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect + github.com/pierrec/lz4/v4 v4.1.3 // indirect + github.com/rivo/uniseg v0.2.0 // indirect github.com/robfig/cron/v3 v3.0.1 github.com/smartystreets/assertions v1.2.0 // indirect github.com/smartystreets/goconvey v1.6.4 // indirect + github.com/stretchr/testify v1.7.0 // indirect github.com/ugorji/go v1.1.13 // indirect - github.com/xuri/efp v0.0.0-20201016154823-031c29024257 // indirect - golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392 // indirect - golang.org/x/image v0.0.0-20200927104501-e162460cd6b5 // indirect - golang.org/x/net v0.0.0-20201110031124-69a78807bb2b // indirect - golang.org/x/sys v0.0.0-20201126233918-771906719818 // indirect + github.com/ulikunitz/xz v0.5.10 // indirect + github.com/xuri/efp v0.0.0-20210128032744-13be4fd5dcb5 // indirect + golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 // indirect + golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb // indirect + golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 // indirect + golang.org/x/sys v0.0.0-20210308170721-88b6017d0656 // indirect google.golang.org/protobuf v1.25.0 // indirect - gopkg.in/check.v1 v1.0.0-20201128035030-22ab2dfb190c // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/ini.v1 v1.62.0 gopkg.in/yaml.v2 v2.4.0 - gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b ) diff --git a/go.sum b/go.sum index 2baa8b46..ac9e84c8 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,8 @@ github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.0 h1:tDWYNCJrpNnlNg8mVdlzAzPjl github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.0/go.mod h1:Uwb0d1GgxJieUWZG5WylTrgQ2SrldfjagAxheU8W6MQ= github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.1 h1:j56fC19WoD3z+u+ZHxm2XwRGyS1XmdSMk7058BLhdsM= github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.1/go.mod h1:gXEhMjm1VadSGjAzyDlBxmdYglP8eJpYWxpwJnmXRWw= +github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.2 h1:MHu5KWWt28FzRGQgc4Ryj/lZT/W/by4NvsnstbWwkkY= +github.com/360EntSecGroup-Skylar/excelize/v2 v2.3.2/go.mod h1:xc0ybJZXcn084ZaIvQv+LfCDQjMWfxkBa2K9nLXYJtI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/Chain-Zhang/pinyin v0.1.3 h1:RzErNyNwVa8z2sOLCuXSOtVdY/AsARb8mBzI2p2qtnE= github.com/Chain-Zhang/pinyin v0.1.3/go.mod h1:5iHpt9p4znrnaP59/hfPMnAojajkDxQaP9io+tRMPho= @@ -17,6 +19,8 @@ github.com/akavel/rsrc v0.9.0 h1:HwUDC0+tMFWqN4D5G+o5siGD4oVsC3jn6zM8ocjc3nY= github.com/akavel/rsrc v0.9.0/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c= github.com/andybalholm/brotli v1.0.0 h1:7UCwP93aiSfvWpapti8g88vVVGp2qqtGyePsSuDafo4= github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= +github.com/andybalholm/brotli v1.0.1 h1:KqhlKozYbRtJvsPrrEeXcO+N2l6NYT5A2QAFmSULpEc= +github.com/andybalholm/brotli v1.0.1/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/awesome-gocui/gocui v0.6.0 h1:hhDJiQC12tEsJNJ+iZBBVaSSLFYo9llFuYpQlL5JZVI= github.com/awesome-gocui/gocui v0.6.0/go.mod h1:1QikxFaPhe2frKeKvEwZEIGia3haiOxOUXKinrv17mA= @@ -84,6 +88,8 @@ github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -94,6 +100,8 @@ github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGa github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 h1:l5lAOZEym3oK3SQ2HBHWsJUfbNBiTXJDeW2QDxw9AQ0= github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gopherjs/gopherjs v0.0.0-20210202160940-bed99a852dfe h1:rcf1P0fm+1l0EjG16p06mYLj9gW9X36KgdHJ/88hS4g= +github.com/gopherjs/gopherjs v0.0.0-20210202160940-bed99a852dfe/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf h1:WfD7VjIE6z8dIvMsI4/s+1qr5EL+zoIGev1BQj1eoJ8= github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf/go.mod h1:hyb9oH7vZsitZCiBt0ZvifOrB+qc8PS5IiilCIb87rg= github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a h1:zPPuIq2jAWWPTrGt70eK/BSch+gFAGrNzecsoENgu2o= @@ -102,6 +110,8 @@ github.com/jinzhu/copier v0.0.0-20201025035756-632e723a6687 h1:bWXum+xWafUxxJpcX github.com/jinzhu/copier v0.0.0-20201025035756-632e723a6687/go.mod h1:24xnZezI2Yqac9J61UC6/dG/k76ttpq0DdJI3QmUvro= github.com/jinzhu/copier v0.1.0 h1:Vh8xALtH3rrKGB/XIRe5d0yCTHPZFauWPLvdpDAbi88= github.com/jinzhu/copier v0.1.0/go.mod h1:24xnZezI2Yqac9J61UC6/dG/k76ttpq0DdJI3QmUvro= +github.com/jinzhu/copier v0.2.5 h1:Spb+3hARaAN5eeGvqS1YAZflyIz3hCgh6HgvIlDi7U0= +github.com/jinzhu/copier v0.2.5/go.mod h1:24xnZezI2Yqac9J61UC6/dG/k76ttpq0DdJI3QmUvro= github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o= github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= @@ -123,13 +133,19 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.10 h1:a/y8CglcM7gLGYmlbP/stPE5sR3hbhFRUjCBfd/0B3I= github.com/klauspost/compress v1.10.10/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.12 h1:famVnQVu7QwryBN4jNseQdUKES71ZAOnB6UQQJPZvqk= +github.com/klauspost/compress v1.11.12/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/pgzip v1.2.4 h1:TQ7CNpYKovDOmqzRHKxJh0BeaBI7UdQZYc6p7pMQh1A= github.com/klauspost/pgzip v1.2.4/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE= +github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -140,6 +156,8 @@ github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.0 h1:Zx5DJFEYQXio93kgXnQ09fXNiUKsqv4OUEu2UtGcB1E= +github.com/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE= @@ -156,6 +174,8 @@ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Ky github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.10 h1:CoZ3S2P7pvtP45xOtBw+/mDL2z0RKI576gSkzRRpdGg= +github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus= github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U= github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= @@ -179,6 +199,8 @@ github.com/nwaples/rardecode v1.1.0 h1:vSxaY8vQhOcVr4mm5e8XllHWTiM4JF507A0Katqw7 github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= github.com/pierrec/lz4/v4 v4.0.3 h1:vNQKSVZNYUEAvRY9FaUXAF1XPbSOHJtDTiP41kzDz2E= github.com/pierrec/lz4/v4 v4.0.3/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.3 h1:/dvQpkb0o1pVlSgKNQqfkavlnXaIK+hJ0LXsKRUN9D4= +github.com/pierrec/lz4/v4 v4.1.3/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -188,6 +210,10 @@ github.com/richardlehane/msoleps v1.0.1 h1:RfrALnSNXzmXLbGct/P2b4xkFz4e8Gmj/0Vj9 github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5 h1:mZHayPoR0lNmnHyvtYjDeq0zlVHn9K/ZXoy17ylucdo= github.com/rifflock/lfshook v0.0.0-20180920164130-b9218ef580f5/go.mod h1:GEXHk5HgEKCvEIIrSpFI3ozzG5xOKA2DVlEX/gGnewM= +github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY= +github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= @@ -215,6 +241,8 @@ github.com/stretchr/testify v1.6.0 h1:jlIyCplCJFULU/01vCkhKuTyc3OorI3bJFuw6obfgh github.com/stretchr/testify v1.6.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/t-tomalak/logrus-easy-formatter v0.0.0-20190827215021-c074f06c5816 h1:J6v8awz+me+xeb/cUTotKgceAYouhIB3pjzgRd6IlGk= github.com/t-tomalak/logrus-easy-formatter v0.0.0-20190827215021-c074f06c5816/go.mod h1:tzym/CEb5jnFI+Q0k4Qq3+LvRF4gO3E2pxS8fHP8jcA= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= @@ -228,6 +256,8 @@ github.com/ugorji/go/codec v1.1.13/go.mod h1:oNVt3Dq+FO91WNQ/9JnHKQP2QJxTzoN7wCB github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/ulikunitz/xz v0.5.7 h1:YvTNdFzX6+W5m9msiYg/zpkSURPPtOlzbqYjrFn7Yt4= github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= github.com/xuri/efp v0.0.0-20191019043341-b7dc4fe9aa91 h1:gp02YctZuIPTk0t7qI+wvg3VQwTPyNmSGG6ZqOsjSL8= @@ -236,6 +266,8 @@ github.com/xuri/efp v0.0.0-20200605144744-ba689101faaf h1:spotWVWg9DP470pPFQ7LaY github.com/xuri/efp v0.0.0-20200605144744-ba689101faaf/go.mod h1:uBiSUepVYMhGTfDeBKKasV4GpgBlzJ46gXUBAqV8qLk= github.com/xuri/efp v0.0.0-20201016154823-031c29024257 h1:6ldmGEJXtsRMwdR2KuS3esk9wjVJNvgk05/YY2XmOj0= github.com/xuri/efp v0.0.0-20201016154823-031c29024257/go.mod h1:uBiSUepVYMhGTfDeBKKasV4GpgBlzJ46gXUBAqV8qLk= +github.com/xuri/efp v0.0.0-20210128032744-13be4fd5dcb5 h1:hO7we8DcWAkmZX/Voqa04Tuo84SbeXIJbdgMj92hIpA= +github.com/xuri/efp v0.0.0-20210128032744-13be4fd5dcb5/go.mod h1:uBiSUepVYMhGTfDeBKKasV4GpgBlzJ46gXUBAqV8qLk= go.uber.org/dig v1.10.0 h1:yLmDDj9/zuDjv3gz8GQGviXMs9TfysIUMUilCpgzUJY= go.uber.org/dig v1.10.0/go.mod h1:X34SnWGr8Fyla9zQNO2GSO2D+TIuqB14OS8JhYocIyw= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -244,12 +276,15 @@ golang.org/x/crypto v0.0.0-20191205180655-e7c4368fe9dd/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897 h1:pLI5jrR7OSLijeIDcmRxNmw2api+jEfxLoykJVice/E= golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9 h1:phUcVbl53swtrUN8kQEXFhUxPlIlWyBfKmidCu7P95o= golang.org/x/crypto v0.0.0-20201117144127-c1f2f97bffc9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392 h1:xYJJ3S178yv++9zXV/hnr29plCAGO9vAFG9dorqaFQc= golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/image v0.0.0-20200430140353-33d19683fad8 h1:6WW6V3x1P/jokJBpRQYUJnMHRP6isStQwCozxnU7XQw= golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -258,6 +293,9 @@ golang.org/x/image v0.0.0-20200801110659-972c09e46d76/go.mod h1:FeLwcggjj3mMvU+o golang.org/x/image v0.0.0-20200922025426-e59bae62ef32/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/image v0.0.0-20200927104501-e162460cd6b5 h1:QelT11PB4FXiDEXucrfNckHoFxwt8USGY1ajP1ZF5lM= golang.org/x/image v0.0.0-20200927104501-e162460cd6b5/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb h1:fqpd0EBDzlHRCjiphRR5Zo/RSWWQlWv34418dnEixWk= +golang.org/x/image v0.0.0-20210220032944-ac19c3e999fb/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -280,8 +318,11 @@ golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc h1:zK/HqS5bZxDptfPJNq8v7vJfXtkU7r9TLIoSr1bXaP4= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201016165138-7b1cca2348c0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -310,7 +351,10 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68 h1:nxC68pudNYkKU6jWhgrqdreuF golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201126233918-771906719818 h1:f1CIuDlJhwANEC2MM87MBEVMr3jl5bifgsfj90XAF9c= golang.org/x/sys v0.0.0-20201126233918-771906719818/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210308170721-88b6017d0656 h1:FuBaiPCiXkq4v+JY5JEGPU/HwEZwpVyDbu/KBz9fU+4= +golang.org/x/sys v0.0.0-20210308170721-88b6017d0656/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -318,6 +362,8 @@ golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -353,6 +399,8 @@ gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b h1:QRR6H1YWRnHb4Y/HeNFCTJLF gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201128035030-22ab2dfb190c h1:3Ao+zLtE2wq/wqnKi1D1nmaRo1n6E9lEVLlXfdDYsQQ= gopkg.in/check.v1 v1.0.0-20201128035030-22ab2dfb190c/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/ini.v1 v1.55.0 h1:E8yzL5unfpW3M6fz/eB7Cb5MQAYSZ7GKo4Qth+N2sgQ= gopkg.in/ini.v1 v1.55.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww= @@ -375,5 +423,7 @@ gopkg.in/yaml.v3 v3.0.0-20200602174320-3e3e88ca92fa h1:5lGs+2OAqZvyIo1XjvoyXoDb8 gopkg.in/yaml.v3 v3.0.0-20200602174320-3e3e88ca92fa/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/res/en/messages.json b/res/en/messages.json index d15fb503..8a8a4823 100644 --- a/res/en/messages.json +++ b/res/en/messages.json @@ -127,7 +127,7 @@ }, { "id": "server_request", - "translation": "\nGot %s request %s. " + "translation": "Got %s request %s. " }, { "id": "server_response", diff --git a/res/en/usage.txt b/res/en/usage.txt index 23266e3f..a724db19 100644 --- a/res/en/usage.txt +++ b/res/en/usage.txt @@ -5,12 +5,12 @@ Parameters: -d --default The default config file for data format. -c --config The current config file for data format, and it can override the config in the default file. -o --output The file name of the data generated. You can specify the output format by the extension name. - For example json, xml and sql. The text data in the original format is output by default. + For example json, xml, sql, csv and xlsx. The text data in the original format is output by default. -n --lines The number of lines of data to be generated. The default is 10. -F --field This parameter can be used to specify the fields, separated by commas. The default is all fields. -t --table If the output format is sql, using it to specify the table name to insert data to. - -T --trim Remove the prefix and postfix of every field when outputting data. + -T --trim Remove the prefix and postfix of every field when outputting data or decode data to json string. -H --human Output a readable format, print the field name, and use the tab key to split. -r --recursive Recursive mode. The default mode is parallel, in which each field loops independently. diff --git a/res/zh/messages.json b/res/zh/messages.json index 4a57f18a..92e900e3 100644 --- a/res/zh/messages.json +++ b/res/zh/messages.json @@ -118,7 +118,7 @@ }, { "id": "server_request", - "translation": "\n收到%s请求 %s。" + "translation": "收到%s请求 %s。" }, { "id": "server_response", diff --git a/res/zh/usage.txt b/res/zh/usage.txt index c6b67706..4b637f86 100644 --- a/res/zh/usage.txt +++ b/res/zh/usage.txt @@ -4,12 +4,12 @@ ZenData是一款通用的数据生成工具,您可以使用yaml文件来定义 -d --default 默认的数据格式配置文件。 -c --config 当前场景的数据格式配置文件,可以覆盖默认文件里面的设置。 - -o --output 生成的数据的文件名。可通过扩展名指定输出json|xml|sql格式的数据。默认输出原始格式的文本数据。 + -o --output 生成的数据的文件名。可通过扩展名指定输出json|xml|sql|csv|xlsx格式的数据。默认输出原始格式的文本数据。 -n --lines 要生成的记录条数,默认为10条。 -F --field 可通过该参数指定要输出的字段列表,用逗号分隔。 默认是所有的字段。 -t --table 输出格式为sql时,需通过该参数指定要插入数据的表名。 - -T --trim 输出的字段去除前后缀,通常用在生成SQL格式的输出。 + -T --trim 输出的字段去除前后缀,通常用在生成SQL格式输出或解析测试数据时。 -H --human 输出可读格式,打印字段名,并使用tab键进行分割。 -r --recursive 递归模式。如不指定,默认为平行模式。平行模式下各个字段独立循环。 递归模式下每个字段的取值依赖于前一字段。可增强数据的随机性。 @@ -42,7 +42,7 @@ $>zd.exe -d demo\default.yaml -n 100 -o test.sql -t user --trim # 输出针 $>zd.exe -i demo\zentao.sql -o db # 根据sql的定义生成各表的yaml文件,存储到db目录里面。 $>zd.exe -c demo\default.yaml -i test.txt --decode # 将-i指定的文件根据-d参数的配置进行解析。 -$>zd.exe -a demo\article.txt -o demo # 转换文章为yaml配置,输出到demo目录下。 +$>zd.exe -a demo\article.txt -o demo # 转换文章为yaml配置,输出到demo目录下。 $>zd.exe -l # 列出所有內置数据。 $>zd.exe -v address.cn.v1 # 查看內置Excel文件data/address/cn.v1.xlsx中的数据表。 diff --git a/src/gen/decode.go b/src/gen/decode.go index a984eb34..52d80f03 100644 --- a/src/gen/decode.go +++ b/src/gen/decode.go @@ -4,7 +4,6 @@ import ( "encoding/json" "github.com/easysoft/zendata/src/model" fileUtils "github.com/easysoft/zendata/src/utils/file" - i118Utils "github.com/easysoft/zendata/src/utils/i118" logUtils "github.com/easysoft/zendata/src/utils/log" "github.com/easysoft/zendata/src/utils/vari" "os" @@ -42,7 +41,7 @@ func Decode(defaultFile, configFile, fieldsToExportStr, input, output string) { jsonObj, _ := json.Marshal(ret) vari.JsonResp = string(jsonObj) - logUtils.PrintTo(i118Utils.I118Prt.Sprintf("analyse_success", output)) + //logUtils.PrintTo(i118Utils.I118Prt.Sprintf("analyse_success", output)) logUtils.PrintLine(vari.JsonResp) } diff --git a/src/gen/res.go b/src/gen/res.go index 26af3852..642aa112 100644 --- a/src/gen/res.go +++ b/src/gen/res.go @@ -52,7 +52,7 @@ func loadResForField(field *model.DefField, res *map[string]map[string][]string) } else if field.From != "" { // refer to res var valueMap map[string][]string - resFile, resType, sheet := fileUtils.GetResProp(field.From) // relate to current file + resFile, resType, sheet := fileUtils.GetResProp(field.From, field.FileDir) // relate to current file valueMap, _ = getResValue(resFile, resType, sheet, field) if (*res)[field.From] == nil { @@ -68,7 +68,7 @@ func loadResForField(field *model.DefField, res *map[string]map[string][]string) } } else if field.Config != "" { // refer to config - resFile, resType, _ := fileUtils.GetResProp(field.Config) + resFile, resType, _ := fileUtils.GetResProp(field.Config, field.FileDir) values, _ := getResValue(resFile, resType, "", field) (*res)[field.Config] = values } @@ -201,14 +201,14 @@ func prepareNestedInstanceRes(insts model.ResInstances, inst model.ResInstancesI vari.Res[instField.From] = groupedValueReferenced } } else if instField.Select != "" { // refer to excel - resFile, resType, sheet := fileUtils.GetResProp(instField.From) + resFile, resType, sheet := fileUtils.GetResProp(instField.From, instField.FileDir) values, _ := getResValue(resFile, resType, sheet, &instField) vari.Res[instField.From] = values } } func getReferencedRangeOrInstant(inst model.DefField) (referencedRanges model.ResRanges, referencedInsts model.ResInstances) { - resFile, _, _ := fileUtils.GetResProp(inst.From) + resFile, _, _ := fileUtils.GetResProp(inst.From, inst.FileDir) yamlContent, err := ioutil.ReadFile(resFile) yamlContent = stringUtils.ReplaceSpecialChars(yamlContent) diff --git a/src/service/view.go b/src/service/view.go index 0b97b9d9..9be87a1a 100644 --- a/src/service/view.go +++ b/src/service/view.go @@ -7,6 +7,7 @@ import ( fileUtils "github.com/easysoft/zendata/src/utils/file" i118Utils "github.com/easysoft/zendata/src/utils/i118" logUtils "github.com/easysoft/zendata/src/utils/log" + "github.com/easysoft/zendata/src/utils/vari" "github.com/mattn/go-runewidth" "gopkg.in/yaml.v3" "io/ioutil" @@ -14,7 +15,7 @@ import ( ) func ViewRes(res string) { - resPath, resType, sheet := fileUtils.GetResProp(res) + resPath, resType, sheet := fileUtils.GetResProp(res, vari.ZdPath) if resType == "yaml" { typ, inst, ranges := ReadYamlData(resPath) @@ -59,9 +60,11 @@ func printInst(inst model.ResInstances) { } for idx, item := range inst.Instances { - if idx > 0 { msg = msg + "\n" } + if idx > 0 { + msg = msg + "\n" + } msg = msg + fmt.Sprintf("%d. %s - %s", - idx+1, item.Instance + strings.Repeat(" ", width - runewidth.StringWidth(item.Instance)), item.Note) + idx+1, item.Instance+strings.Repeat(" ", width-runewidth.StringWidth(item.Instance)), item.Note) } logUtils.PrintTo(msg) @@ -81,8 +84,10 @@ func printRanges(ranges model.ResRanges) { i := 0 for name, item := range ranges.Ranges { - if i > 0 { msg = msg + "\n" } - msg = msg + fmt.Sprintf("%d. %s - %s", i+1, name + strings.Repeat(" ", width -runewidth.StringWidth(name)), item) + if i > 0 { + msg = msg + "\n" + } + msg = msg + fmt.Sprintf("%d. %s - %s", i+1, name+strings.Repeat(" ", width-runewidth.StringWidth(name)), item) i++ } @@ -115,28 +120,34 @@ func printExcelSheet(path, sheetName string) { } widthArr := make([]int, 0) - dataArr := make([][]string, 0) + dataArr := make([][]string, 0) dataArr = append(dataArr, make([]string, 0)) rows, _ := excel.GetRows(sheet) colCount := 0 for index, row := range rows { - if index >= 10 { break } + if index >= 10 { + break + } if index == 0 { // deal with the title for _, col := range rows[index] { val := strings.TrimSpace(col) - if val == "" { break } + if val == "" { + break + } widthArr = append(widthArr, runewidth.StringWidth(val)) - dataArr[0]= append(dataArr[0], val) + dataArr[0] = append(dataArr[0], val) colCount++ } } else { colArr := make([]string, 0) for idx, col := range row { - if idx >= colCount { break } + if idx >= colCount { + break + } val := strings.TrimSpace(col) @@ -155,7 +166,9 @@ func printExcelSheet(path, sheetName string) { for _, row := range dataArr { line := "" for colIdx, col := range row { - if colIdx >= colCount { break } + if colIdx >= colCount { + break + } space := widthArr[colIdx] - runewidth.StringWidth(col) line = line + col + strings.Repeat(" ", space) + " " } diff --git a/test/unit/mod_test.go b/src/test/unit/mod_test.go similarity index 80% rename from test/unit/mod_test.go rename to src/test/unit/mod_test.go index 03f845cd..f8c2e2ca 100644 --- a/test/unit/mod_test.go +++ b/src/test/unit/mod_test.go @@ -8,9 +8,9 @@ import ( func TestMod(t *testing.T) { arrOfArr := [3][]string{} - arrOfArr[0] = []string{"a","b","c","d","e"} - arrOfArr[1] = []string{"1","2"} - arrOfArr[2] = []string{"X","Y","Z"} + arrOfArr[0] = []string{"a", "b", "c", "d", "e"} + arrOfArr[1] = []string{"1", "2"} + arrOfArr[2] = []string{"X", "Y", "Z"} indexArr := make([]int, 0) for _, _ = range arrOfArr { @@ -26,7 +26,7 @@ func TestMod(t *testing.T) { indexArr[i] = loop } - for i := 0; i < 100; i ++ { + for i := 0; i < 100; i++ { str := strconv.Itoa(i) + ": " for j := 0; j < len(arrOfArr); j++ { child := arrOfArr[j] @@ -39,4 +39,4 @@ func TestMod(t *testing.T) { //addCur(&indexArr, arrOfArr) } -} \ No newline at end of file +} diff --git a/test/unit/pinyin_test.go b/src/test/unit/pinyin_test.go similarity index 88% rename from test/unit/pinyin_test.go rename to src/test/unit/pinyin_test.go index d1c50e63..2937cbb9 100644 --- a/test/unit/pinyin_test.go +++ b/src/test/unit/pinyin_test.go @@ -41,8 +41,8 @@ func TestPinYin(t *testing.T) { t.Error("fail to convert " + name) } - pinyin = strings.Replace(pinyin," ", "", -1) - excel.SetCellValue(sheet, "D" + strconv.Itoa(index + 1), pinyin) + pinyin = strings.Replace(pinyin, " ", "", -1) + excel.SetCellValue(sheet, "D"+strconv.Itoa(index+1), pinyin) //doub := "false" //lent := ChineseCount(name) @@ -60,11 +60,11 @@ func TestPinYin(t *testing.T) { } func ChineseCount(str1 string) (count int) { - for _, char := range str1{ - if unicode.Is(unicode.Han, char){ + for _, char := range str1 { + if unicode.Is(unicode.Han, char) { count++ } } return -} \ No newline at end of file +} diff --git a/test/unit/server_test.go b/src/test/unit/server_test.go similarity index 99% rename from test/unit/server_test.go rename to src/test/unit/server_test.go index b023cf43..77aef3f4 100644 --- a/test/unit/server_test.go +++ b/src/test/unit/server_test.go @@ -19,4 +19,4 @@ func TestServer(t *testing.T) { //data.Add("lines", "3") httpUtils.PostForm(urlStr, data) -} \ No newline at end of file +} diff --git a/test/ztf/conf/zdata.conf b/src/test/ztf/conf/zdata.conf similarity index 100% rename from test/ztf/conf/zdata.conf rename to src/test/ztf/conf/zdata.conf diff --git a/test/ztf/src/advanced/field_buildin_instances.exp b/src/test/ztf/src/advanced/field_buildin_instances.exp similarity index 100% rename from test/ztf/src/advanced/field_buildin_instances.exp rename to src/test/ztf/src/advanced/field_buildin_instances.exp diff --git a/test/ztf/src/advanced/field_buildin_instances.php b/src/test/ztf/src/advanced/field_buildin_instances.php similarity index 100% rename from test/ztf/src/advanced/field_buildin_instances.php rename to src/test/ztf/src/advanced/field_buildin_instances.php diff --git a/test/ztf/src/advanced/field_buildin_ranges.exp b/src/test/ztf/src/advanced/field_buildin_ranges.exp similarity index 100% rename from test/ztf/src/advanced/field_buildin_ranges.exp rename to src/test/ztf/src/advanced/field_buildin_ranges.exp diff --git a/test/ztf/src/advanced/field_buildin_ranges.php b/src/test/ztf/src/advanced/field_buildin_ranges.php similarity index 100% rename from test/ztf/src/advanced/field_buildin_ranges.php rename to src/test/ztf/src/advanced/field_buildin_ranges.php diff --git a/test/ztf/src/advanced/field_loop_range.exp b/src/test/ztf/src/advanced/field_loop_range.exp similarity index 100% rename from test/ztf/src/advanced/field_loop_range.exp rename to src/test/ztf/src/advanced/field_loop_range.exp diff --git a/test/ztf/src/advanced/field_loop_range.php b/src/test/ztf/src/advanced/field_loop_range.php similarity index 100% rename from test/ztf/src/advanced/field_loop_range.php rename to src/test/ztf/src/advanced/field_loop_range.php diff --git a/test/ztf/src/advanced/field_overwrite.exp b/src/test/ztf/src/advanced/field_overwrite.exp similarity index 100% rename from test/ztf/src/advanced/field_overwrite.exp rename to src/test/ztf/src/advanced/field_overwrite.exp diff --git a/test/ztf/src/advanced/field_overwrite.php b/src/test/ztf/src/advanced/field_overwrite.php similarity index 100% rename from test/ztf/src/advanced/field_overwrite.php rename to src/test/ztf/src/advanced/field_overwrite.php diff --git a/test/ztf/src/advanced/field_step_negative.exp b/src/test/ztf/src/advanced/field_step_negative.exp similarity index 100% rename from test/ztf/src/advanced/field_step_negative.exp rename to src/test/ztf/src/advanced/field_step_negative.exp diff --git a/test/ztf/src/advanced/field_step_negative.php b/src/test/ztf/src/advanced/field_step_negative.php similarity index 100% rename from test/ztf/src/advanced/field_step_negative.php rename to src/test/ztf/src/advanced/field_step_negative.php diff --git a/test/ztf/src/basic/field_children.exp b/src/test/ztf/src/basic/field_children.exp similarity index 100% rename from test/ztf/src/basic/field_children.exp rename to src/test/ztf/src/basic/field_children.exp diff --git a/test/ztf/src/basic/field_children.php b/src/test/ztf/src/basic/field_children.php similarity index 100% rename from test/ztf/src/basic/field_children.php rename to src/test/ztf/src/basic/field_children.php diff --git a/test/ztf/src/basic/field_common.exp b/src/test/ztf/src/basic/field_common.exp similarity index 100% rename from test/ztf/src/basic/field_common.exp rename to src/test/ztf/src/basic/field_common.exp diff --git a/test/ztf/src/basic/field_common.php b/src/test/ztf/src/basic/field_common.php similarity index 100% rename from test/ztf/src/basic/field_common.php rename to src/test/ztf/src/basic/field_common.php diff --git a/test/ztf/src/basic/field_default_config.exp b/src/test/ztf/src/basic/field_default_config.exp similarity index 100% rename from test/ztf/src/basic/field_default_config.exp rename to src/test/ztf/src/basic/field_default_config.exp diff --git a/test/ztf/src/basic/field_default_config.php b/src/test/ztf/src/basic/field_default_config.php similarity index 100% rename from test/ztf/src/basic/field_default_config.php rename to src/test/ztf/src/basic/field_default_config.php diff --git a/test/ztf/src/basic/field_file.exp b/src/test/ztf/src/basic/field_file.exp similarity index 100% rename from test/ztf/src/basic/field_file.exp rename to src/test/ztf/src/basic/field_file.exp diff --git a/test/ztf/src/basic/field_file.php b/src/test/ztf/src/basic/field_file.php similarity index 100% rename from test/ztf/src/basic/field_file.php rename to src/test/ztf/src/basic/field_file.php diff --git a/test/ztf/src/basic/field_format.exp b/src/test/ztf/src/basic/field_format.exp similarity index 100% rename from test/ztf/src/basic/field_format.exp rename to src/test/ztf/src/basic/field_format.exp diff --git a/test/ztf/src/basic/field_format.php b/src/test/ztf/src/basic/field_format.php similarity index 100% rename from test/ztf/src/basic/field_format.php rename to src/test/ztf/src/basic/field_format.php diff --git a/test/ztf/src/basic/field_loop.exp b/src/test/ztf/src/basic/field_loop.exp similarity index 100% rename from test/ztf/src/basic/field_loop.exp rename to src/test/ztf/src/basic/field_loop.exp diff --git a/test/ztf/src/basic/field_loop.php b/src/test/ztf/src/basic/field_loop.php similarity index 100% rename from test/ztf/src/basic/field_loop.php rename to src/test/ztf/src/basic/field_loop.php diff --git a/test/ztf/src/basic/field_random.exp b/src/test/ztf/src/basic/field_random.exp similarity index 100% rename from test/ztf/src/basic/field_random.exp rename to src/test/ztf/src/basic/field_random.exp diff --git a/test/ztf/src/basic/field_random.php b/src/test/ztf/src/basic/field_random.php similarity index 100% rename from test/ztf/src/basic/field_random.php rename to src/test/ztf/src/basic/field_random.php diff --git a/test/ztf/src/basic/field_repeat.exp b/src/test/ztf/src/basic/field_repeat.exp similarity index 100% rename from test/ztf/src/basic/field_repeat.exp rename to src/test/ztf/src/basic/field_repeat.exp diff --git a/test/ztf/src/basic/field_repeat.php b/src/test/ztf/src/basic/field_repeat.php similarity index 100% rename from test/ztf/src/basic/field_repeat.php rename to src/test/ztf/src/basic/field_repeat.php diff --git a/test/ztf/src/basic/field_step.exp b/src/test/ztf/src/basic/field_step.exp similarity index 100% rename from test/ztf/src/basic/field_step.exp rename to src/test/ztf/src/basic/field_step.exp diff --git a/test/ztf/src/basic/field_step.php b/src/test/ztf/src/basic/field_step.php similarity index 100% rename from test/ztf/src/basic/field_step.php rename to src/test/ztf/src/basic/field_step.php diff --git a/test/ztf/src/basic/field_use_config.exp b/src/test/ztf/src/basic/field_use_config.exp similarity index 100% rename from test/ztf/src/basic/field_use_config.exp rename to src/test/ztf/src/basic/field_use_config.exp diff --git a/test/ztf/src/basic/field_use_config.php b/src/test/ztf/src/basic/field_use_config.php similarity index 100% rename from test/ztf/src/basic/field_use_config.php rename to src/test/ztf/src/basic/field_use_config.php diff --git a/test/ztf/src/basic/field_use_excel.exp b/src/test/ztf/src/basic/field_use_excel.exp similarity index 100% rename from test/ztf/src/basic/field_use_excel.exp rename to src/test/ztf/src/basic/field_use_excel.exp diff --git a/test/ztf/src/basic/field_use_excel.php b/src/test/ztf/src/basic/field_use_excel.php similarity index 100% rename from test/ztf/src/basic/field_use_excel.php rename to src/test/ztf/src/basic/field_use_excel.php diff --git a/test/ztf/src/basic/field_use_instances.exp b/src/test/ztf/src/basic/field_use_instances.exp similarity index 100% rename from test/ztf/src/basic/field_use_instances.exp rename to src/test/ztf/src/basic/field_use_instances.exp diff --git a/test/ztf/src/basic/field_use_instances.php b/src/test/ztf/src/basic/field_use_instances.php similarity index 100% rename from test/ztf/src/basic/field_use_instances.php rename to src/test/ztf/src/basic/field_use_instances.php diff --git a/test/ztf/src/basic/field_use_ranges.exp b/src/test/ztf/src/basic/field_use_ranges.exp similarity index 100% rename from test/ztf/src/basic/field_use_ranges.exp rename to src/test/ztf/src/basic/field_use_ranges.exp diff --git a/test/ztf/src/basic/field_use_ranges.php b/src/test/ztf/src/basic/field_use_ranges.php similarity index 100% rename from test/ztf/src/basic/field_use_ranges.php rename to src/test/ztf/src/basic/field_use_ranges.php diff --git a/test/ztf/src/cmd/cmd_decode.exp b/src/test/ztf/src/cmd/cmd_decode.exp similarity index 100% rename from test/ztf/src/cmd/cmd_decode.exp rename to src/test/ztf/src/cmd/cmd_decode.exp diff --git a/test/ztf/src/cmd/cmd_decode.php b/src/test/ztf/src/cmd/cmd_decode.php similarity index 100% rename from test/ztf/src/cmd/cmd_decode.php rename to src/test/ztf/src/cmd/cmd_decode.php diff --git a/test/ztf/src/cmd/cmd_example.exp b/src/test/ztf/src/cmd/cmd_example.exp similarity index 100% rename from test/ztf/src/cmd/cmd_example.exp rename to src/test/ztf/src/cmd/cmd_example.exp diff --git a/test/ztf/src/cmd/cmd_example.php b/src/test/ztf/src/cmd/cmd_example.php similarity index 100% rename from test/ztf/src/cmd/cmd_example.php rename to src/test/ztf/src/cmd/cmd_example.php diff --git a/test/ztf/src/cmd/cmd_i118.exp b/src/test/ztf/src/cmd/cmd_i118.exp similarity index 100% rename from test/ztf/src/cmd/cmd_i118.exp rename to src/test/ztf/src/cmd/cmd_i118.exp diff --git a/test/ztf/src/cmd/cmd_i118.php b/src/test/ztf/src/cmd/cmd_i118.php similarity index 100% rename from test/ztf/src/cmd/cmd_i118.php rename to src/test/ztf/src/cmd/cmd_i118.php diff --git a/test/ztf/src/cmd/cmd_list.exp b/src/test/ztf/src/cmd/cmd_list.exp similarity index 100% rename from test/ztf/src/cmd/cmd_list.exp rename to src/test/ztf/src/cmd/cmd_list.exp diff --git a/test/ztf/src/cmd/cmd_list.php b/src/test/ztf/src/cmd/cmd_list.php similarity index 100% rename from test/ztf/src/cmd/cmd_list.php rename to src/test/ztf/src/cmd/cmd_list.php diff --git a/test/ztf/src/cmd/cmd_sql.exp b/src/test/ztf/src/cmd/cmd_sql.exp similarity index 100% rename from test/ztf/src/cmd/cmd_sql.exp rename to src/test/ztf/src/cmd/cmd_sql.exp diff --git a/test/ztf/src/cmd/cmd_sql.php b/src/test/ztf/src/cmd/cmd_sql.php similarity index 100% rename from test/ztf/src/cmd/cmd_sql.php rename to src/test/ztf/src/cmd/cmd_sql.php diff --git a/test/ztf/src/cmd/cmd_usage.exp b/src/test/ztf/src/cmd/cmd_usage.exp similarity index 100% rename from test/ztf/src/cmd/cmd_usage.exp rename to src/test/ztf/src/cmd/cmd_usage.exp diff --git a/test/ztf/src/cmd/cmd_usage.php b/src/test/ztf/src/cmd/cmd_usage.php similarity index 100% rename from test/ztf/src/cmd/cmd_usage.php rename to src/test/ztf/src/cmd/cmd_usage.php diff --git a/test/ztf/src/cmd/cmd_view.exp b/src/test/ztf/src/cmd/cmd_view.exp similarity index 100% rename from test/ztf/src/cmd/cmd_view.exp rename to src/test/ztf/src/cmd/cmd_view.exp diff --git a/test/ztf/src/cmd/cmd_view.php b/src/test/ztf/src/cmd/cmd_view.php similarity index 100% rename from test/ztf/src/cmd/cmd_view.php rename to src/test/ztf/src/cmd/cmd_view.php diff --git a/test/ztf/src/lib/config.php b/src/test/ztf/src/lib/config.php similarity index 100% rename from test/ztf/src/lib/config.php rename to src/test/ztf/src/lib/config.php diff --git a/test/ztf/src/lib/debug.php b/src/test/ztf/src/lib/debug.php similarity index 100% rename from test/ztf/src/lib/debug.php rename to src/test/ztf/src/lib/debug.php diff --git a/test/ztf/src/lib/utils.php b/src/test/ztf/src/lib/utils.php similarity index 100% rename from test/ztf/src/lib/utils.php rename to src/test/ztf/src/lib/utils.php diff --git a/test/ztf/src/lib/zd.php b/src/test/ztf/src/lib/zd.php similarity index 100% rename from test/ztf/src/lib/zd.php rename to src/test/ztf/src/lib/zd.php diff --git a/test/ztf/src/output/out_json.exp b/src/test/ztf/src/output/out_json.exp similarity index 100% rename from test/ztf/src/output/out_json.exp rename to src/test/ztf/src/output/out_json.exp diff --git a/test/ztf/src/output/out_json.php b/src/test/ztf/src/output/out_json.php similarity index 100% rename from test/ztf/src/output/out_json.php rename to src/test/ztf/src/output/out_json.php diff --git a/test/ztf/src/output/out_sql.exp b/src/test/ztf/src/output/out_sql.exp similarity index 100% rename from test/ztf/src/output/out_sql.exp rename to src/test/ztf/src/output/out_sql.exp diff --git a/test/ztf/src/output/out_sql.php b/src/test/ztf/src/output/out_sql.php similarity index 100% rename from test/ztf/src/output/out_sql.php rename to src/test/ztf/src/output/out_sql.php diff --git a/test/ztf/src/output/out_txt.exp b/src/test/ztf/src/output/out_txt.exp similarity index 100% rename from test/ztf/src/output/out_txt.exp rename to src/test/ztf/src/output/out_txt.exp diff --git a/test/ztf/src/output/out_txt.php b/src/test/ztf/src/output/out_txt.php similarity index 100% rename from test/ztf/src/output/out_txt.php rename to src/test/ztf/src/output/out_txt.php diff --git a/test/ztf/src/output/out_xml.exp b/src/test/ztf/src/output/out_xml.exp similarity index 100% rename from test/ztf/src/output/out_xml.exp rename to src/test/ztf/src/output/out_xml.exp diff --git a/test/ztf/src/output/out_xml.php b/src/test/ztf/src/output/out_xml.php similarity index 100% rename from test/ztf/src/output/out_xml.php rename to src/test/ztf/src/output/out_xml.php diff --git a/test/ztf/src/service/svc_default_config.exp b/src/test/ztf/src/service/svc_default_config.exp similarity index 100% rename from test/ztf/src/service/svc_default_config.exp rename to src/test/ztf/src/service/svc_default_config.exp diff --git a/test/ztf/src/service/svc_default_config.php b/src/test/ztf/src/service/svc_default_config.php similarity index 100% rename from test/ztf/src/service/svc_default_config.php rename to src/test/ztf/src/service/svc_default_config.php diff --git a/test/ztf/src/service/svc_post.exp b/src/test/ztf/src/service/svc_post.exp similarity index 100% rename from test/ztf/src/service/svc_post.exp rename to src/test/ztf/src/service/svc_post.exp diff --git a/test/ztf/src/service/svc_post.php b/src/test/ztf/src/service/svc_post.php similarity index 100% rename from test/ztf/src/service/svc_post.php rename to src/test/ztf/src/service/svc_post.php diff --git a/test/ztf/src/service/svc_root.exp b/src/test/ztf/src/service/svc_root.exp similarity index 100% rename from test/ztf/src/service/svc_root.exp rename to src/test/ztf/src/service/svc_root.exp diff --git a/test/ztf/src/service/svc_root.php b/src/test/ztf/src/service/svc_root.php similarity index 100% rename from test/ztf/src/service/svc_root.php rename to src/test/ztf/src/service/svc_root.php diff --git a/src/utils/file/file.go b/src/utils/file/file.go index 58983d6a..bd813281 100644 --- a/src/utils/file/file.go +++ b/src/utils/file/file.go @@ -142,8 +142,10 @@ func GetExeDir() string { // where zd.exe file in dir = p[:strings.LastIndex(p, string(os.PathSeparator))] } } else { // debug - //dir, _ = os.Getwd() - dir = "/Users/aaron/rd/project/zentao/go/zd" + dir, _ = os.Getwd() + if commonUtils.IsMac() { + dir = "/Users/aaron/rd/project/zentao/go/zd" + } } dir, _ = filepath.Abs(dir) @@ -169,16 +171,15 @@ func GetAbsDir(path string) string { return abs } -func GetResProp(from string) (resFile, resType, sheet string) { // from resource - +func GetResProp(from, currFileDir string) (resFile, resType, sheet string) { // from resource if strings.LastIndex(from, ".yaml") > -1 { // yaml, ip.v1.yaml - resFile = ConvertResYamlPath(from) + resFile = ConvertResYamlPath(from, currFileDir) resType = "yaml" } else if strings.LastIndex(from, ".txt") > -1 { - resFile = ConvertResYamlPath(from) + resFile = ConvertResYamlPath(from, currFileDir) resType = "text" } else { // excel, like address.cn.v1.china - resFile, sheet = ConvertResExcelPath(from) + resFile, sheet = ConvertResExcelPath(from, currFileDir) resType = "excel" } @@ -216,7 +217,7 @@ func ConvertReferRangeToPath(f, currFile string) (path string) { return } -func ConvertResYamlPath(from string) (ret string) { +func ConvertResYamlPath(from, dir string) (ret string) { arr := strings.Split(from, ".") for i := 0; i < len(arr); i++ { dir := "" @@ -246,7 +247,7 @@ func ConvertResYamlPath(from string) (ret string) { return } -func ConvertResExcelPath(from string) (ret, sheet string) { +func ConvertResExcelPath(from, dir string) (ret, sheet string) { path1 := from // address.cn.v1 index := strings.LastIndex(from, ".") path2 := from[:index] // address.cn.v1.china @@ -297,7 +298,7 @@ func ConvertResExcelPath(from string) (ret, sheet string) { return } -func ComputerReferFilePath(file string) (resPath string) { +func ComputerReferFilePath(file, dir string) (resPath string) { resPath = file if filepath.IsAbs(resPath) && FileExist(resPath) { return diff --git a/demo/test/test-account.yaml b/test/test-account.yaml similarity index 100% rename from demo/test/test-account.yaml rename to test/test-account.yaml diff --git a/demo/test/test-color.yaml b/test/test-color.yaml similarity index 100% rename from demo/test/test-color.yaml rename to test/test-color.yaml diff --git a/demo/test/test-country.yaml b/test/test-country.yaml similarity index 100% rename from demo/test/test-country.yaml rename to test/test-country.yaml diff --git a/demo/test/test-datetime.yaml b/test/test-datetime.yaml similarity index 100% rename from demo/test/test-datetime.yaml rename to test/test-datetime.yaml diff --git a/demo/test/test-domain.yaml b/test/test-domain.yaml similarity index 100% rename from demo/test/test-domain.yaml rename to test/test-domain.yaml diff --git a/demo/test/test-email.yaml b/test/test-email.yaml similarity index 100% rename from demo/test/test-email.yaml rename to test/test-email.yaml diff --git a/demo/test/test-format.yaml b/test/test-format.yaml similarity index 100% rename from demo/test/test-format.yaml rename to test/test-format.yaml diff --git a/demo/test/test-ip.yaml b/test/test-ip.yaml similarity index 100% rename from demo/test/test-ip.yaml rename to test/test-ip.yaml diff --git a/demo/test/test-nested.yaml b/test/test-nested.yaml similarity index 100% rename from demo/test/test-nested.yaml rename to test/test-nested.yaml diff --git a/demo/test/test-nested1.yaml b/test/test-nested1.yaml similarity index 100% rename from demo/test/test-nested1.yaml rename to test/test-nested1.yaml diff --git a/demo/test/test-nested2.yaml b/test/test-nested2.yaml similarity index 100% rename from demo/test/test-nested2.yaml rename to test/test-nested2.yaml diff --git a/demo/test/test-range.yaml b/test/test-range.yaml similarity index 100% rename from demo/test/test-range.yaml rename to test/test-range.yaml diff --git a/demo/test/test-recursice.yaml b/test/test-recursice.yaml similarity index 100% rename from demo/test/test-recursice.yaml rename to test/test-recursice.yaml diff --git a/demo/test/test-uuid.yaml b/test/test-uuid.yaml similarity index 100% rename from demo/test/test-uuid.yaml rename to test/test-uuid.yaml diff --git a/ui/src/locales/lang/zh-CN.js b/ui/src/locales/lang/zh-CN.js index 6ad77e2e..3cc1d5a8 100644 --- a/ui/src/locales/lang/zh-CN.js +++ b/ui/src/locales/lang/zh-CN.js @@ -106,7 +106,7 @@ const locale = { 'form.mode.recursive': '递归', 'form.left.pad': '左填充', 'form.right.pad': '右填充', - 'form.rand': '所及', + 'form.rand': '随机', 'form.format': '格式', 'form.function': '函数', 'form.start': '开始', -- GitLab