lbkit 0.8.1__tar.gz → 0.8.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lbkit-0.8.1/lbkit.egg-info → lbkit-0.8.3}/PKG-INFO +1 -1
- lbkit-0.8.3/lbkit/__init__.py +2 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/codegen.py +70 -10
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/ctype_defination.py +352 -74
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/idf_interface.py +70 -7
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/client.c.mako +49 -42
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/client.h.mako +35 -21
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/public.c.mako +122 -46
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/public.h.mako +49 -5
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/server.c.mako +60 -49
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/server.h.mako +22 -13
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/component/arg_parser.py +1 -1
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/component/build.py +13 -6
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/component/template/conanbase.mako +10 -6
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/component/template/deploy.mako +3 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/build_manifest.py +2 -2
- {lbkit-0.8.1 → lbkit-0.8.3/lbkit.egg-info}/PKG-INFO +1 -1
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit.egg-info/SOURCES.txt +0 -1
- {lbkit-0.8.1 → lbkit-0.8.3}/test/test_codegen.py +441 -1
- lbkit-0.8.1/lbkit/__init__.py +0 -2
- lbkit-0.8.1/lbkit/utils/version.py +0 -38
- {lbkit-0.8.1 → lbkit-0.8.3}/AUTHORS +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/LICENSE +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/MANIFEST.in +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/README.md +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/build_conan_parallel.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/ci_robot/__init__.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/ci_robot/gitee.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/cli.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/__init__.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/renderer.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/interface.c.mako +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/codegen/template/interface.introspect.xml.mako +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/component/__init__.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/component/test.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/errors.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/helper.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/__init__.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/build_image.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/build_prepare.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/build_rootfs.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/config.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/task.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/template/conanfile.py.mako +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/integration/template/rootfs.py.mako +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/lbkit.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/log.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/misc.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/tools.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/utils/__init__.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/utils/images/__init__.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit/utils/images/emmc.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit.egg-info/dependency_links.txt +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit.egg-info/entry_points.txt +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit.egg-info/requires.txt +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/lbkit.egg-info/top_level.txt +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/setup.cfg +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/setup.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/test/__init__.py +0 -0
- {lbkit-0.8.1 → lbkit-0.8.3}/test/test_helper.py +0 -0
|
@@ -8,7 +8,6 @@ import json
|
|
|
8
8
|
import yaml
|
|
9
9
|
import argparse
|
|
10
10
|
from lbkit.codegen.idf_interface import IdfInterface
|
|
11
|
-
from lbkit.utils.version import Version, X_VER
|
|
12
11
|
|
|
13
12
|
from mako.lookup import TemplateLookup
|
|
14
13
|
from lbkit.log import Logger
|
|
@@ -21,16 +20,55 @@ log = Logger("codegen")
|
|
|
21
20
|
|
|
22
21
|
|
|
23
22
|
class CodeGenHistory():
|
|
24
|
-
def __init__(self, lb_base: str, description: str):
|
|
23
|
+
def __init__(self, lb_base: str, description: str, lb_base_compatible_required: str):
|
|
25
24
|
self.lb_base = lb_base
|
|
26
25
|
self.description = description
|
|
26
|
+
# lb_base兼容性配置项
|
|
27
|
+
self.lb_base_compatible_required = lb_base_compatible_required
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class Version():
|
|
31
|
+
def __init__(self, ver_str):
|
|
32
|
+
if not re.match("^([0-9]|([1-9][0-9]*))\\.([0-9]|([1-9][0-9]*))$", ver_str):
|
|
33
|
+
raise Exception("Version string {ver_str} not match with regex ^([0-9]|([1-9][0-9]*))\\.([0-9]|([1-9][0-9]*))$")
|
|
34
|
+
self.info: CodeGenHistory = history_versions.get(ver_str)
|
|
35
|
+
chunks = ver_str.split(".")
|
|
36
|
+
self.major = int(chunks[0])
|
|
37
|
+
self.minor = int(chunks[1])
|
|
38
|
+
self.str = str(self.major) + "." + str(self.minor)
|
|
39
|
+
|
|
40
|
+
def bt(self, next_ver):
|
|
41
|
+
next = Version(next_ver)
|
|
42
|
+
if self.major > next.major or (self.major == next.major and self.minor > next.minor):
|
|
43
|
+
return True
|
|
44
|
+
return False
|
|
45
|
+
|
|
46
|
+
def be(self, next_ver):
|
|
47
|
+
next = Version(next_ver)
|
|
48
|
+
if self.major > next.major or (self.major == next.major and self.minor >= next.minor):
|
|
49
|
+
return True
|
|
50
|
+
return False
|
|
51
|
+
|
|
52
|
+
def lt(self, next_ver):
|
|
53
|
+
next = Version(next_ver)
|
|
54
|
+
if self.major < next.major or (self.major == next.major and self.minor < next.minor):
|
|
55
|
+
return True
|
|
56
|
+
return False
|
|
57
|
+
|
|
58
|
+
def le(self, next_ver):
|
|
59
|
+
next = Version(next_ver)
|
|
60
|
+
if self.major < next.major or (self.major == next.major and self.minor <= next.minor):
|
|
61
|
+
return True
|
|
62
|
+
return False
|
|
27
63
|
|
|
28
64
|
# 历史自动生成版本号,计划用于用于生成代码稳定性测试
|
|
29
65
|
# TODO: 支持生成代码稳定性测试,确保生成的代码一致性
|
|
30
66
|
history_versions = {
|
|
31
|
-
"5.0": CodeGenHistory("lb_base/[>=0.8.1 <0.9.0]", "简化接口类名定义;简化枚举变量在接口间传递时的字符串定义")
|
|
67
|
+
"5.0": CodeGenHistory("lb_base/[>=0.8.1 <0.9.0]", "简化接口类名定义;简化枚举变量在接口间传递时的字符串定义", "0"),
|
|
68
|
+
"5.1": CodeGenHistory("lb_base/[>=0.8.3 <0.9.0]", "方法和信号添加保留字段用于功能扩展,同时设置请求和响应为空标志位", "8002"),
|
|
69
|
+
"5.2": CodeGenHistory("lb_base/[>=0.8.4 <0.9.0]", "支持校验数值边界、字符串正则以及数组匹配等规则", "8004"),
|
|
32
70
|
}
|
|
33
|
-
__version__=Version("5.
|
|
71
|
+
__version__=Version("5.1")
|
|
34
72
|
|
|
35
73
|
|
|
36
74
|
def version_check(ver_str: str):
|
|
@@ -44,10 +82,17 @@ def version_check(ver_str: str):
|
|
|
44
82
|
log.error(f" {ver}: {msg}")
|
|
45
83
|
raise Exception(f"Can't found the valid version for {ver_str}")
|
|
46
84
|
|
|
85
|
+
def codegen_version_max():
|
|
86
|
+
max_v = __version__
|
|
87
|
+
for ver_str, _ in history_versions.items():
|
|
88
|
+
next_ver = Version(ver_str)
|
|
89
|
+
if next_ver.bt(max_v.str):
|
|
90
|
+
max_v = next_ver
|
|
91
|
+
return max_v.str
|
|
47
92
|
|
|
48
93
|
def codegen_version_arg(parser: argparse.ArgumentParser, default=__version__.str, short_arg="-cv", full_arg="--codegen_version"):
|
|
49
94
|
# 默认的自动生成工具版本号为2
|
|
50
|
-
help=f'''must less than or equal to {
|
|
95
|
+
help=f'''must less than or equal to {codegen_version_max()}, default: {default}
|
|
51
96
|
|
|
52
97
|
codegen versions:
|
|
53
98
|
'''
|
|
@@ -60,6 +105,7 @@ class CodeGen(object):
|
|
|
60
105
|
def __init__(self, args):
|
|
61
106
|
self.args = args
|
|
62
107
|
self.codegen_version = __version__
|
|
108
|
+
self.log_level = "NOTSET"
|
|
63
109
|
|
|
64
110
|
def _gen(self, idf_file, directory=".", code_type="all"):
|
|
65
111
|
directory = os.path.realpath(directory)
|
|
@@ -67,6 +113,7 @@ class CodeGen(object):
|
|
|
67
113
|
code_types = ["server", "client", "public"]
|
|
68
114
|
if code_type != "all":
|
|
69
115
|
code_types = [code_type]
|
|
116
|
+
log.info(f"Codegen version: {self.codegen_version.str}")
|
|
70
117
|
for ct in code_types:
|
|
71
118
|
os.makedirs(os.path.join(directory, ct), exist_ok=True)
|
|
72
119
|
out_file = os.path.join(directory, ct, interface.name + ".xml")
|
|
@@ -92,7 +139,7 @@ class CodeGen(object):
|
|
|
92
139
|
|
|
93
140
|
def get_interface(self, idf_file):
|
|
94
141
|
lookup = TemplateLookup(directories=os.path.join(lb_cwd, "template"))
|
|
95
|
-
return IdfInterface(lookup, idf_file, self.codegen_version)
|
|
142
|
+
return IdfInterface(lookup, idf_file, self.codegen_version, self.log_level)
|
|
96
143
|
|
|
97
144
|
def run(self):
|
|
98
145
|
"""
|
|
@@ -105,6 +152,11 @@ class CodeGen(object):
|
|
|
105
152
|
formatter_class=SmartFormatter)
|
|
106
153
|
codegen_version_arg(parser)
|
|
107
154
|
parser.add_argument("-d", "--directory", help='generate code directory', default=".")
|
|
155
|
+
parser.add_argument("-l", "--log_level", help='show log level',
|
|
156
|
+
choices=[
|
|
157
|
+
"CRITICAL", "FATAL", "ERROR", "WARN",
|
|
158
|
+
"WARNING", "INFO", "DEBUG", "NOTSET",
|
|
159
|
+
], default=None)
|
|
108
160
|
parser.add_argument("-t", "--codetype", help='code type, default: all', default="all", choices=["public", "server", "client", "all"])
|
|
109
161
|
group2 = parser.add_argument_group('cdf file', 'Generate code using the specified CDF file')
|
|
110
162
|
group2.add_argument("-c", "--cdf_file", help='component description file, default metadata/package.yml', default=None)
|
|
@@ -112,13 +164,18 @@ class CodeGen(object):
|
|
|
112
164
|
group1.add_argument("-i", "--idf_file", help='A IDF file to be processed e.g.: com.litebmc.Upgrade.xml', default=None)
|
|
113
165
|
|
|
114
166
|
args = parser.parse_args(self.args)
|
|
167
|
+
if args.log_level:
|
|
168
|
+
self.log_level = args.log_level
|
|
169
|
+
log.setLevel(self.log_level)
|
|
115
170
|
|
|
116
171
|
if args.cdf_file:
|
|
117
172
|
if not os.path.isfile(args.cdf_file):
|
|
118
173
|
raise ArgException(f"argument -c/--cdf_file: {args.cdf_file} not exist")
|
|
119
174
|
configs = Helper.read_yaml(args.cdf_file, "codegen", [])
|
|
120
175
|
# 为保障兼容,package.yml未指定版本号的,默认使用2,该版本配套lb_base/0.6.0版本,其LBProperty无set/get成员
|
|
121
|
-
ver_str =
|
|
176
|
+
ver_str = os.environ.get("CODEGEN_VERSION")
|
|
177
|
+
if ver_str is None:
|
|
178
|
+
ver_str = Helper.read_yaml(args.cdf_file, "codegen_version", args.codegen_version)
|
|
122
179
|
version_check(ver_str)
|
|
123
180
|
self.codegen_version = Version(ver_str)
|
|
124
181
|
for cfg in configs:
|
|
@@ -136,15 +193,18 @@ class CodeGen(object):
|
|
|
136
193
|
self._gen(file, outdir)
|
|
137
194
|
return
|
|
138
195
|
else:
|
|
139
|
-
|
|
140
|
-
|
|
196
|
+
ver_str = os.environ.get("CODEGEN_VERSION")
|
|
197
|
+
if ver_str is None:
|
|
198
|
+
ver_str = args.codegen_version
|
|
199
|
+
version_check(ver_str)
|
|
200
|
+
self.codegen_version = Version(ver_str)
|
|
141
201
|
|
|
142
202
|
intf_file = args.idf_file
|
|
143
203
|
if not intf_file:
|
|
144
204
|
raise ArgException(f"argument error, arguments -c/--cdf_file and -i/--idf_file are not set")
|
|
145
205
|
if not os.path.isfile(intf_file):
|
|
146
206
|
raise ArgException(f"argument -i/--idf_file: {args.idf_file} not exist")
|
|
147
|
-
if self.codegen_version.bt(
|
|
207
|
+
if self.codegen_version.bt(codegen_version_max()):
|
|
148
208
|
raise ArgException(f"argument -cv/--codegen_version: validate failed, must less than or equal to {__version__.str}")
|
|
149
209
|
out_dir = os.path.join(os.getcwd(), args.directory)
|
|
150
210
|
if not intf_file.endswith(".yaml"):
|