3 + @ v0.1.0,shlibinc,gplib.shlib,stdio.shlib,dbgout.shlib,(eng-doc)
4 => @ v0.2.0,scripttest,args.shlib,term.shlib,cataid.shlib,catadir.shlib,(code-trimp,eng-cn-doc,tut)
5 @ v0.3.0,catalog,scripttest,attr.shlib,strsyntax.shlib,catalog.shlib,
6 @ v0.4.0,tmpl,imi,evnstr,strfmt.shlib,imi.shlib,
7 @ v0.5.0,codegen,code-tmpl,
8 @ v0.6.0,setdir,wrap,etz,pkg-install,paths.shlib,
9 @ v0.7.0,flocker.shlib,fsvar.shlib,
10 @ v0.8.0,dvar,dtype,@,bzsh,fsdvar.shlib,preproc.shlib,pub-dir-set,
11 @ v0.9.0,dstruct,hexfmt,rwfile.shlib,dtype.shlib,dv_offset.shlib,dvload.shlib,
12 @ v0.10.0,taskload,taskunit,svclaunch,scripttest,taskload.shlib,task-unit,
13 @ v0.11.0,dbglogview,fmtdbgout.shlib,
15 @ v1.0.0,(v1 version,long time support version)
16 @ *v1.1.0,xml,record,db,libxml2.shlib,recutils.shlib,sqlite.shlib,
17 @ *v1.2.0,code-tmpl,init-task-unit,wrap-lib,pub-dir-set,
22 # scripttest(attr,strsyntax,catalog/cataid/catadir,),args调整,程序banner信息修改。
23 # codegen(strfmt,imi,tmpl,code-tmpl)
24 # shlib add(etz/pkg-install,sysdir,wrap,taskload,depnode)
26 @ shlib-cmd(xml,recutils,sqlite,idutils,shmm,ttyrec)
29 # devutils(scripttest,codegen,modify,wordlist)
30 # pkg-mngr(软件包信息管理)(etz/paths/cfgdir/wrap/pkg-install/pkg-mngr)
31 # fsdvar(fsvar/dvar/dstruct/dtype/@/bzsh)
32 # datatypes,snbb/sqltg
33 # taskunit(taskload/svclaunch/nodedep)
34 # utilities(depend on shlib-cmd)
38 # pkg-builder(subcmd/taglib,toolchain-mngr,taskunit)
45 # libcxt(sqltg,allocator,plugin),libsyslib,libhw,libemb
46 # mvc/compo: libtypes,libmodel,libarch,compolibs
48 @ dvar(fsdvar-shlib,libdvar,libappvfs,libdvarfs,dvarfsd,dvar/dtype,bzsh,)
49 @ pinit(taskunit,pinit,drvlaunch,fsload,network,subsys)
50 @ utilities(hexfmt/lxr/gmr/txtfmt/protod/collectd,rpipe/cron/xinet)
51 @ *soft-mngr(pkg/prog,app/soft/midware/bsp/drv/soft-center/soft-repository)
54 @ bzbox(libbzsh,bzsh,libbzgmr-std,libbzcmd-std,libbzgmr-ext,libbzcmd-ext)
57 # code-analyze(codegen,codefmt,code-assistent,)
64 # param参数文件(imi/xml/catalog/rec)
91 # 添加系统初始化脚本,在系统初始化时运行。脚本中添加各个功能模块在开机定义的alias,imi的配置中定义的shlib。
92 # session中load的shlib避免重复include,以及shlibinc避免重复load。一些imi的load占用cpu资源较多,在系统setup时load,避免每次运行load。
102 @ scripttest & codegen
107 # varlist仅提供foreach函数,以及var的get/set。
108 # strsyntax定义单解析/输出的syntax。
109 # cataid根据name分配,不固定使用CATA_ID。
110 + # cataid中catadir相关的inc/dec,归类到catadir.shlib中。
111 # catadir,varlist,catalog之间的foreach函数和sync。
112 # line-str使用\为续行符,读取行首不含white-space的一行字符串,连接到字符串中。
117 # cataid(syntax_judgement)
118 # varlist/attr(module::section::attr,var_list)
119 # strsyntax(str2arr,arr2str,syntax_fmt,syntax_regepr,syntax_sepchar)
121 @ varlist(var::id::attr,var_list)
122 # 多级名称的环境变量名称组合,及访问。var下所有attr都存储到var_list,用于release。
123 # attr add var id attr
124 # attr getvn var id attr
130 # 用于字符串到数组的解析。使用固定分隔符,或使用RegExpr。解析后数组id与属性名称之间以attr_idx进行映射。
135 # syntax_sepchar,attr_idx,nid_idx,默认使用分隔符组成的数组。根据attr_idx数组的值输出"对应的环境变量名称"。
136 # strsyntax,包含cata_syntax_*和dir<N>_syntax_*,用于两种用途的格式定义。
140 # [catalog]目录定义区,和[content]内容定义区
143 <->.[item].name."description".[src::c-h-testc-mdl]
145 <->.[item].name."description".[test::sh-stdout]
147 <->.[item].name."description".[file]
148 <->.[file].name."description".[sh]
149 <->.[file].name."description".[stdout]
151 catalog_ext_param_test_dispatch ()
153 # 将NFEXT的扩展名解析后调用proc函数
157 # 用于item enter时的proc函数,创建文件节点
158 catalog_file_touch ()
163 # 用于item leave时的proc函数,根据tmpl和content-list创建文件内容
169 # global参数变量定义区,包含cata_syntax_*和dir<N>_syntax_*,用于两种格式的定义。
170 # catalog node string
171 # attr cata::syntax::fmt=''
172 cata__syntax__fmt='<@{0}>.[@{1}].@{2}."@{3}"'
173 #cata__syntax__regepr=
174 cata__syntax__sepchar='.'
175 cata__syntax__attr_idx=( NID NTYPE NNAME NDESC )
176 cata__syntax__nid_idx= 0
178 # src file name string
179 src__syntax__fmt='@{2}.@{4}'
180 #src__syntax__regepr=
181 src__syntax__sepchar='.'
182 src__syntax__attr_idx=( NNAME NFEXT )
183 src__syntax__nid_idx=
185 # test file name string
186 test__syntax__fmt='@{0}.@{2}.sh'
187 #test__syntax__regepr=
188 test__syntax__sepchar='.'
189 test__syntax__attr_idx=( NID NNAME NFEXT )
190 test__syntax__nid_idx=0
192 # test stdout file name string
193 stdout__syntax__fmt='@{0}.@{2}.sh.@{3}.stdout'
194 #stdout__syntax__regepr=
195 stdout__syntax__sepchar='.'
196 stdout__syntax__attr_idx=( NID NNAME txt NDESC NFEXT )
197 stdout__syntax__nid_idx=0
200 # -c,将catalog中的<->设置成实际的id。
201 # 。将catalog中的id同步到content的id。
203 # 。将catalog中的id设置为<->
206 # -y,从catalog同步更新输出到已存在的dir/file
207 # -S,从dir/file同步更新到catalog
208 # 输出内容是否存在,由程序中判断。如有存在,先备份。
212 @ 转换输出时,使用tarball压缩文件backup已存在内容。
214 # dir/file输出catalog,catalog未存在时,根据attr创建catalog,未定义项空白。
215 # dir/file输出catalog,catalog已存在时,dir/file包含NID,根据NID值更新到catalog,dir/file中未包含的属性,使用对应name的attr为默认值。
216 # dir/file输出catalog,catalog已存在时,dir/file不包含NID,
217 根据catalog的varlist的NNAME,chk是否存在dir/file,存在即已创建,使用dir/file的attr输出node;不存在删除,输出del提示信息,dir/file中新增项添加到catalog,新增项的NID为<->。
219 # catalog输出dir/file,dir/file未存在时,根据attr创建dir/file
220 # catalog输出dir/file,dir/file已存在时,dir/file包含NID,根据NID值和NNAME值更新到对应的dir/file,使用rename/mv,避免content内容的误删除。dir/file不存在时,根据NID值匹配对应item,使用rename/mv更新文件名。如果文件名和NID都未匹配,输出new。如果某个catalog下的node已更新,对应dir下未更新的dir/file放入trash,并在log输出del。
221 # catalog输出dir/file,dir/file已存在时,dir/file不包含NID,rename/mv更新dir/file的名称信息。dir/file不存在时,新建。catalog中的node已输出,dir/file中存在的冗余项,保存到trash。
224 @ catalog2dircontent,
225 # 根据dir/file获取dir-varlist,
227 # dir-node和item-node,与dir-varlist比较,已存在且不同,则rename; 未存在,新建dir/item; dir-varlist中多出来的,move到trash-dir中。
230 # content时,添加到cont-varlist,
231 # item-leave时,根据cont-varlist以及item的tmpl信息,输出文件的content。
233 @ catalog2dircontent,方法1
234 # 根据catadir获取varlist,
235 # foreach catalog,使用str2arr获取var。逐个node进行函数响应。忽略content-node
236 # foreach catalog,只对item-node和content-node进行处理。
238 @ catalog2dircontent,方法2
239 # 根据catadir获取dir-varlist,
240 # foreach catalog,使用str2arr获取var,获取node-varlist
241 # foreach varlist,与dir-varlist比较
242 # foreach catalog,只对item和content处理。
244 @ catalog2dircontent,方法3
245 # foreach catalog,使用str2arr获取var。逐个node进行函数响应。
246 # dir-node和item-node不使用varlist,使用文件exist比较。
249 # 读取dir-varlist和文件目录比较,对于多余的节点比较容易辨识。
250 # content和dir分两个stage,程序中的varlist可release再更新content。
253 @ dircontent2catalog,
254 # 文件系统中dir-node/item-node遍历,输出dir-varlist,
255 # 遍历catalog的dir和item,输出并删减dir-varlist中的node。如dir-varlist中不存在,提示该node未存在。一个dir下的node有多余时,append到末尾。
256 # 根据dir-varlist中的item,将每个item文件内容输出成[catalog-content]中的item和content。
257 # dir的遍历使用find并获取var,输出catalog的node,比逐个目录ls减少磁盘io。
258 # dir名称中不包含id信息的,输出到catalog与原有的位置或不相同。使用dir-varlist,进行name的比较,使用原有的排序。或使用参数,以id为compare。
274 # shlib add。add args,term,attr,strsyntax,cataid/catadir/catalog,
275 + args desc字符串格式改进,使用单个分隔符
276 + helper改为optstr,helper根据xxx_helper_desc产生,可多个组合使用。
277 + 多个程序optstr的引用,使用--loadshlib参数不运行main。
278 + 目录遍历和catalog遍历的代码放到catadir和catalog中。
281 # improve scripttest, add catalog,catadir,catavarlist,
282 + design-doc分析功能模块和接口函数
283 + catavarlist/attrvar,以name,cataid,attr的结构存储的var,以及get/set函数。同样也可适用于imi
284 + catadir,catalog,tmpl data translate
287 @ add codegen, tmpl,strfmt,evaln
289 =># c/cpp/sh templete(c/cpp/sh src file-skltn),
290 =># catalog,(nodeSyntax,contentNodeSyntax,contentSync)(dirSync2Cata时,添加add/del/modify的comment)
291 => # cataid.shlib(init,)
294 @ templete(cmnt-tag-grammar,code-feature-desc,code-tmpl,)
298 + # add shlib for scripttest to shlib-v0.02, args,term,catalog,cataid。 scripttest, and improve the code of catalog。
299 # add docsgen.sh to devutils,and relative pkg
300 # etz/pkg-install,wrap,path & cfgdirs,
306 # desc string improve,use =~ and BASH_REMATCH
310 # path & cfgdirs(pkg-install),
311 # builders(flist,plist,gen-proclib,proclib)
315 # flocker,rwfile,fsvar,decl/dvar/dtype/dstruct,txtproc
316 # bzsh(dvar/dtype/@)(sh-decode,dvar-fmt-decode),
318 @ dvar(libbzsh,symbol,dtype,dvar,expr,execlist...)
319 # dvar(libdvar,libdvarfs,dvarfsd,)
322 @ libcxt(libcxt,libsyslib,libhal,libemb)(sqltg,mem,symbol,struct/cstruct,),vais(vector,array,index,string),plf(pipe,linestr-pipe,frame-stream)
323 @ libcxt:sqltg,allocator,strings,symtbl,"plugin/compo/cntlr",element,xcontent/thr/fiber,ivkfilter,stream(stdio,fifo,frame),fmtdbgout,imi,args,param,"appfs",
324 # ivk-chain,(inotify,libacl,libattr)
326 # libsyslib:thr-sys,thr-msg/thr-event,ipc,shmem,rpc,mem,serial,net,
329 # libtypes,libcompo,libarch,libmodel,compolibs,(code-if-xml,module-list,module-member-list,)
331 # type-compo,sharp-edit/combine/alias/action/property-dialog,
333 @ bzbox(bzsh+libcxt+typelib+lib库)(libcxt-dvar,libbzsh-dvarfs,libcxt-typelib,libbzsh-)
337 @ fmtdbgout.shlib/dbglogview,
339 # initunit,pexec,nodedep
340 # taskload,svc/svclaunch,mpexec,nettask,
342 # tmpl,imi,catalog,depnode
343 # etz,dircfg/syscfg,path定义
345 # imi,rec,xml,log,lxr,gmr,var/type,基于文本的文件定义和使用
346 # gnu程序recutils,ttyrec,xmlint,screen/termux
348 @ dev-utils(dev-xxx),(modify,pkgname,version-id,compile-param,cross-param,shargs,cargs,tagdoc,codegen,)cunit/cppunit,
350 # scripttest,testcase,testinglib,
353 @ build-pkg/build-pkglist/build-config
354 /code-utils(code-xxx)
356 @ *tui(ncurses,form/menu/pannel,guile-ncurses,dialog,libcdk,ui-script,)