vona-cli-set-api 1.0.8 → 1.0.12

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.
Files changed (276) hide show
  1. package/cli/templates/create/module/boilerplate/_package.json +27 -7
  2. package/cli/templates/create/module/boilerplate/_tsconfig.build.json +8 -0
  3. package/cli/templates/create/module/boilerplate/_tsconfig.json +2 -3
  4. package/cli/templates/create/module/snippets/package.json.ts +17 -0
  5. package/cli/templates/create/module/snippets/tsconfig.json.ts +19 -0
  6. package/cli/templates/create/project/basic/boilerplate/.editorconfig +9 -0
  7. package/cli/templates/create/project/basic/boilerplate/.gitattributes +2 -0
  8. package/cli/templates/create/project/basic/boilerplate/.vscode/extensions.json +4 -0
  9. package/cli/templates/create/project/basic/boilerplate/.vscode/settings.json +45 -0
  10. package/cli/templates/create/project/basic/boilerplate/.vscode/vona.code-snippets +51 -0
  11. package/cli/templates/create/project/basic/boilerplate/env/.env +59 -0
  12. package/cli/templates/create/project/basic/boilerplate/env/.env.local +0 -0
  13. package/cli/templates/create/project/basic/boilerplate/env/.env.prod +26 -0
  14. package/cli/templates/create/project/basic/boilerplate/env/.env.test +0 -0
  15. package/cli/templates/create/project/basic/boilerplate/eslint.config.mjs +16 -0
  16. package/cli/templates/create/project/basic/boilerplate/package.original.json +45 -0
  17. package/cli/templates/create/project/basic/boilerplate/pnpm-workspace.yaml +7 -0
  18. package/cli/templates/create/project/basic/boilerplate/scripts/app-init.sh +4 -0
  19. package/cli/templates/create/project/basic/boilerplate/scripts/wait-for-it.sh +156 -0
  20. package/cli/templates/create/project/basic/boilerplate/src/backend/config/config/config.local.ts +10 -0
  21. package/cli/templates/create/project/basic/boilerplate/src/backend/config/config/config.prod.ts +21 -0
  22. package/cli/templates/create/project/basic/boilerplate/src/backend/config/config/config.test.ts +10 -0
  23. package/cli/templates/create/project/basic/boilerplate/src/backend/config/config/config.ts +10 -0
  24. package/cli/templates/create/project/basic/boilerplate/src/backend/config/locale/en-us.ts +5 -0
  25. package/cli/templates/create/project/basic/boilerplate/src/backend/config/locale/zh-cn.ts +5 -0
  26. package/cli/templates/create/project/basic/boilerplate/src/backend/config/locales.ts +7 -0
  27. package/cli/templates/create/project/basic/boilerplate/src/backend/typing/env.d.ts +5 -0
  28. package/cli/templates/create/project/basic/boilerplate/src/module/.gitkeep +0 -0
  29. package/cli/templates/create/project/basic/boilerplate/src/module-vendor/.gitkeep +0 -0
  30. package/cli/templates/create/project/basic/boilerplate/src/suite/.gitkeep +0 -0
  31. package/cli/templates/create/project/basic/boilerplate/src/suite-vendor/.gitkeep +0 -0
  32. package/cli/templates/create/project/basic/boilerplate/tsconfig.base.esm.json +10 -0
  33. package/cli/templates/create/project/basic/boilerplate/tsconfig.base.json +3 -0
  34. package/cli/templates/create/project/basic/boilerplate/tsconfig.json +12 -0
  35. package/cli/templates/create/suite/_package.json +2 -2
  36. package/cli/templates/create/suite/_tsconfig.json +2 -2
  37. package/cli/templates/create/test/boilerplate/{{name}}.test.ts +11 -0
  38. package/cli/templates/init/config/boilerplate/config/config.ts +5 -0
  39. package/cli/templates/init/constant/boilerplate/config/constants.ts +1 -0
  40. package/cli/templates/init/error/boilerplate/config/errors.ts +1 -0
  41. package/cli/templates/init/locale/boilerplate/config/locale/en-us.ts +1 -0
  42. package/cli/templates/init/locale/boilerplate/config/locale/zh-cn.ts +1 -0
  43. package/cli/templates/init/main/boilerplate/main.ts +2 -1
  44. package/cli/templates/init/monkey/boilerplate/monkey.ts +3 -1
  45. package/cli/templates/init/static/boilerplate/static/img/vona.png +0 -0
  46. package/cli/templates/tools/crud/boilerplate/src/controller/{{resourceName}}.ts_ +43 -0
  47. package/cli/templates/tools/crud/boilerplate/src/dto/{{resourceName}}Create.ts_ +9 -0
  48. package/cli/templates/tools/crud/boilerplate/src/dto/{{resourceName}}Update.ts_ +9 -0
  49. package/cli/templates/tools/crud/boilerplate/src/entity/{{resourceName}}.ts_ +15 -0
  50. package/cli/templates/tools/crud/boilerplate/src/model/{{resourceName}}.ts_ +5 -0
  51. package/cli/templates/tools/crud/boilerplate/src/service/{{resourceName}}.ts_ +32 -0
  52. package/cli/templates/tools/crud/boilerplate/test/{{resourceName}}.test.ts_ +46 -0
  53. package/cli/templates/tools/crud/snippets/1-package.json.ts +16 -0
  54. package/cli/templates/tools/crud/snippets/2-meta.version.ts +42 -0
  55. package/cli/templates/tools/crud/snippets/3-en-us.ts +27 -0
  56. package/cli/templates/tools/crud/snippets/4-zh-cn.ts +10 -0
  57. package/cli/templates/tools/crud/utils.ts +20 -0
  58. package/dist/index.d.ts +3 -3
  59. package/dist/index.js +3 -3
  60. package/dist/lib/bean/cli.bin.build.d.ts +15 -0
  61. package/dist/lib/bean/cli.bin.build.js +139 -0
  62. package/dist/lib/bean/cli.bin.dbReset.d.ts +13 -0
  63. package/dist/lib/bean/cli.bin.dbReset.js +46 -0
  64. package/dist/lib/bean/cli.bin.demo.d.ts +12 -0
  65. package/dist/lib/bean/cli.bin.demo.js +50 -0
  66. package/dist/lib/bean/cli.bin.dev.d.ts +14 -0
  67. package/dist/lib/bean/cli.bin.dev.js +53 -0
  68. package/dist/lib/bean/cli.bin.test.d.ts +15 -0
  69. package/dist/lib/bean/cli.bin.test.js +67 -0
  70. package/dist/lib/bean/{cli.tools.build.d.ts → cli.bin.tsc.d.ts} +2 -3
  71. package/dist/lib/bean/{cli.tools.build.js → cli.bin.tsc.js} +13 -5
  72. package/dist/lib/bean/cli.create.bean.d.ts +3 -4
  73. package/dist/lib/bean/cli.create.bean.js +42 -28
  74. package/dist/lib/bean/cli.create.module.d.ts +1 -2
  75. package/dist/lib/bean/cli.create.module.js +3 -4
  76. package/dist/lib/bean/cli.create.project.d.ts +26 -0
  77. package/dist/lib/bean/cli.create.project.js +115 -0
  78. package/dist/lib/bean/cli.create.suite.d.ts +1 -2
  79. package/dist/lib/bean/cli.create.suite.js +5 -9
  80. package/dist/lib/bean/cli.create.test.d.ts +15 -0
  81. package/dist/lib/bean/cli.create.test.js +39 -0
  82. package/dist/lib/bean/cli.default.list.d.ts +0 -1
  83. package/dist/lib/bean/cli.default.list.js +0 -1
  84. package/dist/lib/bean/cli.init.config.d.ts +8 -0
  85. package/dist/lib/bean/cli.init.config.js +36 -0
  86. package/dist/lib/bean/cli.init.constant.d.ts +8 -0
  87. package/dist/lib/bean/cli.init.constant.js +36 -0
  88. package/dist/lib/bean/cli.init.error.d.ts +8 -0
  89. package/dist/lib/bean/cli.init.error.js +47 -0
  90. package/dist/lib/bean/cli.init.locale.d.ts +8 -0
  91. package/dist/lib/bean/cli.init.locale.js +36 -0
  92. package/dist/lib/bean/cli.init.main.d.ts +0 -1
  93. package/dist/lib/bean/cli.init.main.js +2 -3
  94. package/dist/lib/bean/cli.init.monkey.d.ts +0 -1
  95. package/dist/lib/bean/cli.init.monkey.js +8 -10
  96. package/dist/lib/bean/cli.init.static.d.ts +8 -0
  97. package/dist/lib/bean/cli.init.static.js +36 -0
  98. package/dist/lib/bean/cli.tools.crud.d.ts +15 -0
  99. package/dist/lib/bean/cli.tools.crud.js +42 -0
  100. package/dist/lib/bean/cli.tools.deps.d.ts +2 -10
  101. package/dist/lib/bean/cli.tools.deps.js +16 -123
  102. package/dist/lib/bean/cli.tools.metadata.d.ts +1 -1
  103. package/dist/lib/bean/cli.tools.metadata.js +71 -32
  104. package/dist/lib/bean/toolsBin/configUtils.d.ts +7 -0
  105. package/dist/lib/bean/toolsBin/configUtils.js +56 -0
  106. package/dist/lib/bean/toolsBin/dbReset.d.ts +1 -0
  107. package/dist/lib/bean/toolsBin/dbReset.js +8 -0
  108. package/dist/lib/bean/toolsBin/demo.d.ts +1 -0
  109. package/dist/lib/bean/toolsBin/demo.js +41 -0
  110. package/dist/lib/bean/toolsBin/generateEntryFiles.d.ts +4 -0
  111. package/dist/lib/bean/toolsBin/generateEntryFiles.js +75 -0
  112. package/dist/lib/bean/toolsBin/generateVonaMeta.d.ts +10 -0
  113. package/dist/lib/bean/toolsBin/generateVonaMeta.js +17 -0
  114. package/dist/lib/bean/toolsBin/test.d.ts +1 -0
  115. package/dist/lib/bean/toolsBin/test.js +121 -0
  116. package/dist/lib/bean/toolsBin/types.d.ts +5 -0
  117. package/dist/lib/bean/toolsBin/types.js +1 -0
  118. package/dist/lib/bean/toolsMetadata/generateBeanGenerals.d.ts +2 -0
  119. package/dist/lib/bean/toolsMetadata/generateBeanGenerals.js +33 -0
  120. package/dist/lib/bean/toolsMetadata/generateBeans.d.ts +2 -2
  121. package/dist/lib/bean/toolsMetadata/generateBeans.js +33 -21
  122. package/dist/lib/bean/toolsMetadata/generateConfig.d.ts +3 -4
  123. package/dist/lib/bean/toolsMetadata/generateConfig.js +12 -14
  124. package/dist/lib/bean/toolsMetadata/generateMetadataCustom.d.ts +3 -0
  125. package/dist/lib/bean/toolsMetadata/generateMetadataCustom.js +23 -0
  126. package/dist/lib/bean/toolsMetadata/generateMonkey.d.ts +2 -3
  127. package/dist/lib/bean/toolsMetadata/generateMonkey.js +3 -4
  128. package/dist/lib/bean/toolsMetadata/generateOnions.d.ts +2 -0
  129. package/dist/lib/bean/toolsMetadata/generateOnions.js +90 -0
  130. package/dist/lib/bean/toolsMetadata/generateScope.d.ts +1 -4
  131. package/dist/lib/bean/toolsMetadata/generateScope.js +43 -16
  132. package/dist/lib/bean/toolsMetadata/generateScopeResources.d.ts +2 -0
  133. package/dist/lib/bean/toolsMetadata/generateScopeResources.js +29 -0
  134. package/dist/lib/bean/toolsMetadata/generateScopeResourcesMeta.d.ts +2 -0
  135. package/dist/lib/bean/toolsMetadata/generateScopeResourcesMeta.js +13 -0
  136. package/dist/lib/bean/toolsMetadata/utils.d.ts +9 -0
  137. package/dist/lib/bean/toolsMetadata/utils.js +82 -0
  138. package/dist/lib/beans.d.ts +36 -11
  139. package/dist/lib/beans.js +36 -11
  140. package/dist/lib/command/bin.build.d.ts +19 -0
  141. package/dist/lib/command/bin.build.js +18 -0
  142. package/dist/lib/command/bin.dbReset.d.ts +15 -0
  143. package/dist/lib/command/bin.dbReset.js +14 -0
  144. package/dist/lib/command/bin.demo.d.ts +15 -0
  145. package/dist/lib/command/bin.demo.js +14 -0
  146. package/dist/lib/command/bin.dev.d.ts +19 -0
  147. package/dist/lib/command/bin.dev.js +18 -0
  148. package/dist/lib/command/bin.test.d.ts +19 -0
  149. package/dist/lib/command/bin.test.js +18 -0
  150. package/dist/lib/command/{tools.build.d.ts → bin.tsc.d.ts} +0 -1
  151. package/dist/lib/command/{tools.build.js → bin.tsc.js} +3 -4
  152. package/dist/lib/command/create.bean.d.ts +0 -1
  153. package/dist/lib/command/create.bean.js +0 -1
  154. package/dist/lib/command/create.module.d.ts +0 -1
  155. package/dist/lib/command/create.module.js +0 -1
  156. package/dist/lib/command/create.project.d.ts +45 -0
  157. package/dist/lib/command/create.project.js +43 -0
  158. package/dist/lib/command/create.suite.d.ts +0 -1
  159. package/dist/lib/command/create.suite.js +0 -1
  160. package/dist/lib/command/create.test.d.ts +34 -0
  161. package/dist/lib/command/create.test.js +33 -0
  162. package/dist/lib/command/default.list.d.ts +0 -1
  163. package/dist/lib/command/default.list.js +0 -1
  164. package/dist/lib/command/init.config.d.ts +9 -0
  165. package/dist/lib/command/init.config.js +10 -0
  166. package/dist/lib/command/init.constant.d.ts +9 -0
  167. package/dist/lib/command/init.constant.js +10 -0
  168. package/dist/lib/command/init.error.d.ts +9 -0
  169. package/dist/lib/command/init.error.js +10 -0
  170. package/dist/lib/command/init.locale.d.ts +9 -0
  171. package/dist/lib/command/init.locale.js +10 -0
  172. package/dist/lib/command/init.main.d.ts +0 -1
  173. package/dist/lib/command/init.main.js +0 -1
  174. package/dist/lib/command/init.monkey.d.ts +0 -1
  175. package/dist/lib/command/init.monkey.js +0 -1
  176. package/dist/lib/command/init.static.d.ts +9 -0
  177. package/dist/lib/command/init.static.js +10 -0
  178. package/dist/lib/command/tools.crud.d.ts +34 -0
  179. package/dist/lib/command/tools.crud.js +33 -0
  180. package/dist/lib/command/tools.deps.d.ts +1 -11
  181. package/dist/lib/command/tools.deps.js +2 -12
  182. package/dist/lib/command/tools.metadata.d.ts +0 -1
  183. package/dist/lib/command/tools.metadata.js +0 -1
  184. package/dist/lib/commands.d.ts +237 -13
  185. package/dist/lib/commands.js +38 -11
  186. package/dist/lib/this.d.ts +0 -1
  187. package/dist/lib/this.js +0 -1
  188. package/dist/lib/utils.d.ts +15 -0
  189. package/dist/lib/utils.js +63 -0
  190. package/dist/typings.d.ts +0 -1
  191. package/dist/typings.js +0 -1
  192. package/package.json +50 -26
  193. package/templates/app/app.ejs +15 -0
  194. package/templates/app/bootstrap.ejs +13 -0
  195. package/templates/app/vona-modules-meta.ejs +49 -0
  196. package/templates/config/_tsconfig_project.json +12 -0
  197. package/templates/config/_tsconfig_source.json +40 -0
  198. package/templates/test/done-only.test.ts +3 -0
  199. package/templates/test/done.test.ts +3 -0
  200. package/cli/templates/create/bean/boilerplate/{{sceneName}}.{{beanName}}.ts_ +0 -4
  201. package/cli/templates/create/module/snippets/package.json.cjs +0 -11
  202. package/cli/templates/create/module/snippets/tsconfig.json.cjs +0 -13
  203. package/dist/index.d.ts.map +0 -1
  204. package/dist/index.js.map +0 -1
  205. package/dist/lib/bean/cli.create.bean.d.ts.map +0 -1
  206. package/dist/lib/bean/cli.create.bean.js.map +0 -1
  207. package/dist/lib/bean/cli.create.module.d.ts.map +0 -1
  208. package/dist/lib/bean/cli.create.module.js.map +0 -1
  209. package/dist/lib/bean/cli.create.suite.d.ts.map +0 -1
  210. package/dist/lib/bean/cli.create.suite.js.map +0 -1
  211. package/dist/lib/bean/cli.default.list.d.ts.map +0 -1
  212. package/dist/lib/bean/cli.default.list.js.map +0 -1
  213. package/dist/lib/bean/cli.init.main.d.ts.map +0 -1
  214. package/dist/lib/bean/cli.init.main.js.map +0 -1
  215. package/dist/lib/bean/cli.init.monkey.d.ts.map +0 -1
  216. package/dist/lib/bean/cli.init.monkey.js.map +0 -1
  217. package/dist/lib/bean/cli.tools.build.d.ts.map +0 -1
  218. package/dist/lib/bean/cli.tools.build.js.map +0 -1
  219. package/dist/lib/bean/cli.tools.deps.d.ts.map +0 -1
  220. package/dist/lib/bean/cli.tools.deps.js.map +0 -1
  221. package/dist/lib/bean/cli.tools.metadata.d.ts.map +0 -1
  222. package/dist/lib/bean/cli.tools.metadata.js.map +0 -1
  223. package/dist/lib/bean/toolsMetadata/generateAtoms.d.ts +0 -2
  224. package/dist/lib/bean/toolsMetadata/generateAtoms.d.ts.map +0 -1
  225. package/dist/lib/bean/toolsMetadata/generateAtoms.js +0 -24
  226. package/dist/lib/bean/toolsMetadata/generateAtoms.js.map +0 -1
  227. package/dist/lib/bean/toolsMetadata/generateBeans.d.ts.map +0 -1
  228. package/dist/lib/bean/toolsMetadata/generateBeans.js.map +0 -1
  229. package/dist/lib/bean/toolsMetadata/generateConfig.d.ts.map +0 -1
  230. package/dist/lib/bean/toolsMetadata/generateConfig.js.map +0 -1
  231. package/dist/lib/bean/toolsMetadata/generateControllers.d.ts +0 -2
  232. package/dist/lib/bean/toolsMetadata/generateControllers.d.ts.map +0 -1
  233. package/dist/lib/bean/toolsMetadata/generateControllers.js +0 -24
  234. package/dist/lib/bean/toolsMetadata/generateControllers.js.map +0 -1
  235. package/dist/lib/bean/toolsMetadata/generateEntities.d.ts +0 -2
  236. package/dist/lib/bean/toolsMetadata/generateEntities.d.ts.map +0 -1
  237. package/dist/lib/bean/toolsMetadata/generateEntities.js +0 -24
  238. package/dist/lib/bean/toolsMetadata/generateEntities.js.map +0 -1
  239. package/dist/lib/bean/toolsMetadata/generateModels.d.ts +0 -2
  240. package/dist/lib/bean/toolsMetadata/generateModels.d.ts.map +0 -1
  241. package/dist/lib/bean/toolsMetadata/generateModels.js +0 -34
  242. package/dist/lib/bean/toolsMetadata/generateModels.js.map +0 -1
  243. package/dist/lib/bean/toolsMetadata/generateMonkey.d.ts.map +0 -1
  244. package/dist/lib/bean/toolsMetadata/generateMonkey.js.map +0 -1
  245. package/dist/lib/bean/toolsMetadata/generateScope.d.ts.map +0 -1
  246. package/dist/lib/bean/toolsMetadata/generateScope.js.map +0 -1
  247. package/dist/lib/bean/toolsMetadata/generateServices.d.ts +0 -2
  248. package/dist/lib/bean/toolsMetadata/generateServices.d.ts.map +0 -1
  249. package/dist/lib/bean/toolsMetadata/generateServices.js +0 -54
  250. package/dist/lib/bean/toolsMetadata/generateServices.js.map +0 -1
  251. package/dist/lib/beans.d.ts.map +0 -1
  252. package/dist/lib/beans.js.map +0 -1
  253. package/dist/lib/command/create.bean.d.ts.map +0 -1
  254. package/dist/lib/command/create.bean.js.map +0 -1
  255. package/dist/lib/command/create.module.d.ts.map +0 -1
  256. package/dist/lib/command/create.module.js.map +0 -1
  257. package/dist/lib/command/create.suite.d.ts.map +0 -1
  258. package/dist/lib/command/create.suite.js.map +0 -1
  259. package/dist/lib/command/default.list.d.ts.map +0 -1
  260. package/dist/lib/command/default.list.js.map +0 -1
  261. package/dist/lib/command/init.main.d.ts.map +0 -1
  262. package/dist/lib/command/init.main.js.map +0 -1
  263. package/dist/lib/command/init.monkey.d.ts.map +0 -1
  264. package/dist/lib/command/init.monkey.js.map +0 -1
  265. package/dist/lib/command/tools.build.d.ts.map +0 -1
  266. package/dist/lib/command/tools.build.js.map +0 -1
  267. package/dist/lib/command/tools.deps.d.ts.map +0 -1
  268. package/dist/lib/command/tools.deps.js.map +0 -1
  269. package/dist/lib/command/tools.metadata.d.ts.map +0 -1
  270. package/dist/lib/command/tools.metadata.js.map +0 -1
  271. package/dist/lib/commands.d.ts.map +0 -1
  272. package/dist/lib/commands.js.map +0 -1
  273. package/dist/lib/this.d.ts.map +0 -1
  274. package/dist/lib/this.js.map +0 -1
  275. package/dist/typings.d.ts.map +0 -1
  276. package/dist/typings.js.map +0 -1
@@ -0,0 +1,50 @@
1
+ import path from 'node:path';
2
+ import { BeanCliBase } from '@cabloy/cli';
3
+ import fse from 'fs-extra';
4
+ import { generateVonaMeta } from "./toolsBin/generateVonaMeta.js";
5
+ export class CliBinDemo extends BeanCliBase {
6
+ async execute() {
7
+ const { argv } = this.context;
8
+ // super
9
+ await super.execute();
10
+ const projectPath = argv.projectPath;
11
+ // test
12
+ await this._demo(projectPath);
13
+ }
14
+ async _demo(projectPath) {
15
+ const { argv } = this.context;
16
+ const mode = 'local';
17
+ const flavor = argv.flavor || 'normal';
18
+ const configMeta = { flavor, mode };
19
+ if (!fse.existsSync(path.join(projectPath, '.vona'))) {
20
+ const configOptions = {
21
+ appDir: projectPath,
22
+ runtimeDir: '.vona',
23
+ workers: 1,
24
+ };
25
+ await generateVonaMeta(configMeta, configOptions);
26
+ }
27
+ await this._run(projectPath);
28
+ }
29
+ async _run(projectPath) {
30
+ // testFile
31
+ let testFile = path.join(import.meta.dirname, './toolsBin/demo.ts');
32
+ if (!fse.existsSync(testFile)) {
33
+ testFile = path.join(import.meta.dirname, './toolsBin/demo.js');
34
+ }
35
+ // run
36
+ let args = [];
37
+ args = args.concat(['--experimental-transform-types', '--loader=ts-node/esm', testFile, projectPath]);
38
+ const pos = process.argv.indexOf(':bin:demo');
39
+ if (pos > -1) {
40
+ args = args.concat(process.argv.slice(pos + 1));
41
+ }
42
+ await this.helper.spawnExe({
43
+ cmd: 'node',
44
+ args,
45
+ options: {
46
+ cwd: projectPath,
47
+ },
48
+ });
49
+ }
50
+ }
@@ -0,0 +1,14 @@
1
+ import type { glob } from '@cabloy/module-glob';
2
+ import type { VonaMetaFlavor } from '@cabloy/module-info';
3
+ import { BeanCliBase } from '@cabloy/cli';
4
+ declare module '@cabloy/cli' {
5
+ interface ICommandArgv {
6
+ workers?: number;
7
+ flavor?: VonaMetaFlavor;
8
+ }
9
+ }
10
+ export declare class CliBinDev extends BeanCliBase {
11
+ execute(): Promise<void>;
12
+ _dev(projectPath: string): Promise<void>;
13
+ _run(projectPath: string, _modulesMeta: Awaited<ReturnType<typeof glob>>): Promise<unknown>;
14
+ }
@@ -0,0 +1,53 @@
1
+ import path from 'node:path';
2
+ import { BeanCliBase } from '@cabloy/cli';
3
+ import nodemon from 'nodemon';
4
+ import { rimraf } from 'rimraf';
5
+ import { generateVonaMeta } from "./toolsBin/generateVonaMeta.js";
6
+ export class CliBinDev extends BeanCliBase {
7
+ async execute() {
8
+ const { argv } = this.context;
9
+ // super
10
+ await super.execute();
11
+ const projectPath = argv.projectPath;
12
+ // run
13
+ await this._dev(projectPath);
14
+ }
15
+ async _dev(projectPath) {
16
+ const { argv } = this.context;
17
+ const mode = 'local';
18
+ const flavor = argv.flavor || 'normal';
19
+ const configMeta = { flavor, mode };
20
+ const configOptions = {
21
+ appDir: projectPath,
22
+ runtimeDir: '.vona',
23
+ workers: argv.workers,
24
+ };
25
+ const { modulesMeta } = await generateVonaMeta(configMeta, configOptions);
26
+ await this._run(projectPath, modulesMeta);
27
+ await rimraf(path.join(projectPath, '.vona'));
28
+ }
29
+ async _run(projectPath, _modulesMeta) {
30
+ return new Promise((resolve, _reject) => {
31
+ nodemon({
32
+ script: '.vona/bootstrap.ts',
33
+ cwd: projectPath,
34
+ exec: 'node',
35
+ execArgs: ['--experimental-transform-types', '--loader=ts-node/esm'],
36
+ // signal: 'SIGHUP',
37
+ });
38
+ nodemon.on('quit', () => {
39
+ resolve(undefined);
40
+ }).on('restart', files => {
41
+ // eslint-disable-next-line
42
+ console.log('App restarted due to: ', files);
43
+ });
44
+ });
45
+ // await this.helper.spawnExe({
46
+ // cmd: 'node',
47
+ // args: ['--experimental-transform-types', '--loader=ts-node/esm', '.vona/bootstrap.ts'],
48
+ // options: {
49
+ // cwd: projectPath,
50
+ // },
51
+ // });
52
+ }
53
+ }
@@ -0,0 +1,15 @@
1
+ import type { glob } from '@cabloy/module-glob';
2
+ import type { VonaMetaFlavor } from '@cabloy/module-info';
3
+ import { BeanCliBase } from '@cabloy/cli';
4
+ declare module '@cabloy/cli' {
5
+ interface ICommandArgv {
6
+ coverage?: boolean;
7
+ flavor?: VonaMetaFlavor;
8
+ }
9
+ }
10
+ export declare class CliBinTest extends BeanCliBase {
11
+ execute(): Promise<void>;
12
+ _test(projectPath: string): Promise<void>;
13
+ _run(projectPath: string, modulesMeta: Awaited<ReturnType<typeof glob>>): Promise<void>;
14
+ _combineTestPatterns(projectPath: string, modulesMeta: Awaited<ReturnType<typeof glob>>): string[];
15
+ }
@@ -0,0 +1,67 @@
1
+ import path from 'node:path';
2
+ import { BeanCliBase } from '@cabloy/cli';
3
+ import fse from 'fs-extra';
4
+ import { rimraf } from 'rimraf';
5
+ import { generateVonaMeta } from "./toolsBin/generateVonaMeta.js";
6
+ export class CliBinTest extends BeanCliBase {
7
+ async execute() {
8
+ const { argv } = this.context;
9
+ // super
10
+ await super.execute();
11
+ const projectPath = argv.projectPath;
12
+ // test
13
+ await this._test(projectPath);
14
+ }
15
+ async _test(projectPath) {
16
+ const { argv } = this.context;
17
+ const mode = 'test';
18
+ const flavor = argv.flavor || 'normal';
19
+ const configMeta = { flavor, mode };
20
+ const configOptions = {
21
+ appDir: projectPath,
22
+ runtimeDir: '.vona',
23
+ workers: 1,
24
+ };
25
+ const { modulesMeta } = await generateVonaMeta(configMeta, configOptions);
26
+ await this._run(projectPath, modulesMeta);
27
+ await rimraf(path.join(projectPath, '.vona'));
28
+ }
29
+ async _run(projectPath, modulesMeta) {
30
+ const { argv } = this.context;
31
+ // globs
32
+ const patterns = this._combineTestPatterns(projectPath, modulesMeta);
33
+ // testFile
34
+ let testFile = path.join(import.meta.dirname, './toolsBin/test.ts');
35
+ if (!fse.existsSync(testFile)) {
36
+ testFile = path.join(import.meta.dirname, './toolsBin/test.js');
37
+ }
38
+ // run
39
+ let args = [];
40
+ if (argv.coverage) {
41
+ args.push('--experimental-test-coverage');
42
+ }
43
+ if (process.env.TEST_WHYISNODERUNNING === 'true') {
44
+ args.push('--import=why-is-node-running/include');
45
+ }
46
+ args = args.concat(['--experimental-transform-types', '--loader=ts-node/esm', testFile, projectPath, (!!argv.coverage).toString(), patterns.join(',')]);
47
+ await this.helper.spawnExe({
48
+ cmd: 'node',
49
+ args,
50
+ options: {
51
+ cwd: projectPath,
52
+ },
53
+ });
54
+ }
55
+ _combineTestPatterns(projectPath, modulesMeta) {
56
+ const patterns = [];
57
+ for (const moduleName in modulesMeta.modules) {
58
+ const module = modulesMeta.modules[moduleName];
59
+ const testDir = path.join(module.root, 'test');
60
+ if (fse.existsSync(testDir)) {
61
+ const relativePath = path.relative(projectPath, module.root);
62
+ patterns.push(`${relativePath}/test/**/*.ts`);
63
+ }
64
+ }
65
+ return patterns;
66
+ }
67
+ }
@@ -4,8 +4,7 @@ declare module '@cabloy/cli' {
4
4
  force: boolean;
5
5
  }
6
6
  }
7
- export declare class CliToolsBuild extends BeanCliBase {
7
+ export declare class CliBinTsc extends BeanCliBase {
8
8
  execute(): Promise<void>;
9
- _build(_projectPath: string, force: boolean): Promise<void>;
9
+ _tsc(projectPath: string, force: boolean): Promise<void>;
10
10
  }
11
- //# sourceMappingURL=cli.tools.build.d.ts.map
@@ -1,41 +1,49 @@
1
1
  import { BeanCliBase } from '@cabloy/cli';
2
- export class CliToolsBuild extends BeanCliBase {
2
+ export class CliBinTsc extends BeanCliBase {
3
3
  async execute() {
4
4
  const { argv } = this.context;
5
5
  // super
6
6
  await super.execute();
7
7
  const projectPath = argv.projectPath;
8
8
  const force = argv.force;
9
- await this._build(projectPath, force);
9
+ await this._tsc(projectPath, force);
10
10
  }
11
- async _build(_projectPath, force) {
11
+ async _tsc(projectPath, force) {
12
12
  // count
13
- const count = Object.keys(this.modulesMeta.suites).length + this.modulesMeta.modulesArray.filter(item => !item.suite).length;
13
+ const count = 1 +
14
+ Object.keys(this.modulesMeta.suites).length + this.modulesMeta.modulesArray.filter(item => !item.suite).length;
14
15
  // begin
15
16
  let counter = 0;
16
17
  const timeBegin = new Date();
18
+ // eslint-disable-next-line
17
19
  console.log('===> build begin');
18
20
  // args
19
21
  const tscArgs = ['-b'];
20
22
  if (force) {
21
23
  tscArgs.push('--force');
22
24
  }
25
+ // tsc: project
26
+ // eslint-disable-next-line
27
+ console.log(`===> ${++counter}/${count} project`);
28
+ await this.helper.processHelper.tsc(tscArgs, { cwd: projectPath });
23
29
  // suites
24
30
  for (const key in this.modulesMeta.suites) {
25
31
  const suite = this.modulesMeta.suites[key];
32
+ // eslint-disable-next-line
26
33
  console.log(`===> ${++counter}/${count} suite: ${suite.info.originalName}`);
27
34
  await this.helper.processHelper.tsc(tscArgs, { cwd: suite.root });
28
35
  }
29
36
  // modules
30
37
  for (const module of this.modulesMeta.modulesArray) {
31
38
  if (!module.suite) {
39
+ // eslint-disable-next-line
32
40
  console.log(`===> ${++counter}/${count} module: ${module.info.originalName}`);
33
41
  await this.helper.processHelper.tsc(tscArgs, { cwd: module.root });
34
42
  }
35
43
  }
36
44
  // end
37
45
  const timeEnd = new Date();
46
+ // eslint-disable-next-line
38
47
  console.log(`===> build end: ${(timeEnd.valueOf() - timeBegin.valueOf()) / 1000}s`);
39
48
  }
40
49
  }
41
- //# sourceMappingURL=cli.tools.build.js.map
@@ -1,5 +1,5 @@
1
+ import type { IModuleInfo } from '@cabloy/module-info';
1
2
  import { BeanCliBase } from '@cabloy/cli';
2
- import { IModuleInfo } from '@cabloy/module-info';
3
3
  declare module '@cabloy/cli' {
4
4
  interface ICommandArgv {
5
5
  module: string;
@@ -8,11 +8,10 @@ declare module '@cabloy/cli' {
8
8
  sceneNameCapitalize: string;
9
9
  beanName: string;
10
10
  beanNameCapitalize: string;
11
- decoratorName: string;
12
- beanOptions: string;
11
+ moduleResourceName: string;
13
12
  }
14
13
  }
15
14
  export declare class CliCreateBean extends BeanCliBase {
16
15
  execute(): Promise<void>;
16
+ private _getBoilerplatesOrSnippets;
17
17
  }
18
- //# sourceMappingURL=cli.create.bean.d.ts.map
@@ -1,11 +1,8 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
1
3
  import { BeanCliBase } from '@cabloy/cli';
2
- import path from 'path';
3
- import fs from 'fs';
4
- import { __ThisSetName__ } from '../this.js';
5
- const __decorators = {
6
- virtual: 'Virtual',
7
- aop: 'Aop',
8
- };
4
+ import { getOnionMetasMeta, getOnionScenesMeta } from '@cabloy/module-info';
5
+ import { __ThisSetName__ } from "../this.js";
9
6
  export class CliCreateBean extends BeanCliBase {
10
7
  async execute() {
11
8
  const { argv } = this.context;
@@ -22,40 +19,57 @@ export class CliCreateBean extends BeanCliBase {
22
19
  // target dir
23
20
  const targetDir = await this.helper.ensureDir(_module.root);
24
21
  // scene name
25
- const sceneName = argv.sceneName; // bean/summer.cache
26
- const sceneParts = sceneName.split('.');
27
- argv.sceneNameCapitalize = sceneParts.map(item => this.helper.firstCharToUpperCase(item)).join();
22
+ const sceneName = argv.sceneName;
23
+ argv.sceneNameCapitalize = this.helper.firstCharToUpperCase(sceneName);
24
+ // scene meta
25
+ // onionScenesMeta
26
+ const onionScenesMeta = getOnionScenesMeta(this.modulesMeta.modules);
27
+ const onionSceneMeta = onionScenesMeta[sceneName];
28
28
  // bean name
29
29
  const beanName = argv.beanName;
30
30
  argv.beanNameCapitalize = this.helper.firstCharToUpperCase(beanName);
31
- // decoratorName
32
- argv.decoratorName = __decorators[sceneName] || 'Bean';
33
- // beanOptions
34
- if (sceneName === 'aop') {
35
- argv.beanOptions = "{ match: 'some-bean-name' }";
36
- }
37
- else if (sceneName === 'bean') {
38
- argv.beanOptions = '';
39
- }
40
- else {
41
- argv.beanOptions = `{ scene: '${sceneName}' }`;
42
- }
31
+ // moduleResourceName
32
+ argv.moduleResourceName = this.helper.combineModuleNameAndResource(argv.moduleInfo.relativeName, argv.beanName);
43
33
  // directory
44
- const beanDir = path.join(targetDir, 'src/bean');
45
- const beanFile = path.join(beanDir, `${sceneName}.${beanName}.ts`);
34
+ const beanDir = path.join(targetDir, onionSceneMeta.sceneIsolate ? `src/${sceneName}` : 'src/bean');
35
+ const beanFile = path.join(beanDir, onionSceneMeta.sceneIsolate ? `${beanName}.ts` : `${sceneName}.${beanName}.ts`);
46
36
  if (fs.existsSync(beanFile)) {
47
37
  throw new Error(`${sceneName} bean exists: ${beanName}`);
48
38
  }
49
39
  await this.helper.ensureDir(beanDir);
50
- // render boilerplate
40
+ // snippets/boilerplate
41
+ const snippets = this._getBoilerplatesOrSnippets('snippets');
42
+ const boilerplates = this._getBoilerplatesOrSnippets('boilerplate');
43
+ const snippetsName = snippets[`${sceneName}:${argv.beanName}`] || snippets[sceneName];
44
+ const boilerplateName = boilerplates[`${sceneName}:${argv.beanName}`] || boilerplates[sceneName];
45
+ // render
51
46
  await this.template.renderBoilerplateAndSnippets({
52
47
  targetDir: beanDir,
53
48
  setName: __ThisSetName__,
54
- snippetsPath: null,
55
- boilerplatePath: 'create/bean/boilerplate',
49
+ snippetsPath: snippetsName,
50
+ boilerplatePath: boilerplateName,
56
51
  });
57
52
  // tools.metadata
58
53
  await this.helper.invokeCli([':tools:metadata', moduleName], { cwd: argv.projectPath });
59
54
  }
55
+ _getBoilerplatesOrSnippets(type) {
56
+ const result = {};
57
+ // scenes
58
+ const onionScenesMeta = getOnionScenesMeta(this.modulesMeta.modules);
59
+ for (const sceneName in onionScenesMeta) {
60
+ const onionSceneMeta = onionScenesMeta[sceneName];
61
+ if (onionSceneMeta[type]) {
62
+ result[sceneName] = path.join(onionSceneMeta.module.root, onionSceneMeta[type]);
63
+ }
64
+ }
65
+ // metas
66
+ const onionMetasMeta = getOnionMetasMeta(this.modulesMeta.modules);
67
+ for (const sceneName in onionMetasMeta) {
68
+ const onionMetaMeta = onionMetasMeta[sceneName];
69
+ if (onionMetaMeta[type]) {
70
+ result[`meta:${sceneName}`] = path.join(onionMetaMeta.module.root, onionMetaMeta[type]);
71
+ }
72
+ }
73
+ return result;
74
+ }
60
75
  }
61
- //# sourceMappingURL=cli.create.bean.js.map
@@ -1,5 +1,5 @@
1
+ import type { IModuleInfo, ISuite } from '@cabloy/module-info';
1
2
  import { BeanCliBase } from '@cabloy/cli';
2
- import { IModuleInfo, ISuite } from '@cabloy/module-info';
3
3
  declare module '@cabloy/cli' {
4
4
  interface ICommandArgv {
5
5
  suite: string;
@@ -13,4 +13,3 @@ declare module '@cabloy/cli' {
13
13
  export declare class CliCreateModule extends BeanCliBase {
14
14
  execute(): Promise<void>;
15
15
  }
16
- //# sourceMappingURL=cli.create.module.d.ts.map
@@ -1,7 +1,7 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
1
3
  import { BeanCliBase } from '@cabloy/cli';
2
- import fs from 'fs';
3
- import path from 'path';
4
- import { __ThisSetName__ } from '../this.js';
4
+ import { __ThisSetName__ } from "../this.js";
5
5
  export class CliCreateModule extends BeanCliBase {
6
6
  async execute() {
7
7
  const { argv } = this.context;
@@ -67,4 +67,3 @@ export class CliCreateModule extends BeanCliBase {
67
67
  }
68
68
  }
69
69
  }
70
- //# sourceMappingURL=cli.create.module.js.map
@@ -0,0 +1,26 @@
1
+ import type { CmdOptions } from '@cabloy/cli';
2
+ import { BeanCliBase } from '@cabloy/cli';
3
+ import urllib from 'urllib';
4
+ declare module '@cabloy/cli' {
5
+ interface ICommandArgv {
6
+ force: boolean;
7
+ template: string;
8
+ SERVER_KEYS: string;
9
+ SERVER_KEYS_PROD: string;
10
+ DATABASE_CLIENT_MYSQL_USER: string;
11
+ DATABASE_CLIENT_MYSQL_PASSWORD: string;
12
+ DATABASE_CLIENT_MYSQL_PASSWORD_ROOT: string;
13
+ DATABASE_CLIENT_PG_USER: string;
14
+ DATABASE_CLIENT_PG_PASSWORD: string;
15
+ DATABASE_CLIENT_PG_PASSWORD_ROOT: string;
16
+ }
17
+ }
18
+ export declare class CliCreateProject extends BeanCliBase {
19
+ httpClient: typeof urllib;
20
+ constructor(options: CmdOptions);
21
+ execute(): Promise<void>;
22
+ printUsage(targetDir: string): Promise<void>;
23
+ downloadBoilerplate(packageName: string): Promise<string>;
24
+ getPackageInfo(packageName: string, withFallback: boolean): Promise<any>;
25
+ curl(url: string, options: any): Promise<import("urllib").HttpClientResponse<any>>;
26
+ }
@@ -0,0 +1,115 @@
1
+ import fs from 'node:fs';
2
+ import { createRequire } from 'node:module';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { BeanCliBase } from '@cabloy/cli';
6
+ import compressing from 'compressing';
7
+ import fse from 'fs-extra';
8
+ import randomize from 'randomatic';
9
+ import { rimraf } from 'rimraf';
10
+ import urllib from 'urllib';
11
+ import * as uuid from 'uuid';
12
+ import { __ThisSetName__ } from "../this.js";
13
+ export class CliCreateProject extends BeanCliBase {
14
+ httpClient;
15
+ constructor(options) {
16
+ super(options);
17
+ this.httpClient = urllib;
18
+ }
19
+ async execute() {
20
+ const { argv } = this.context;
21
+ // super
22
+ await super.execute();
23
+ // project name
24
+ const projectName = argv.name;
25
+ // target dir
26
+ const targetDir = path.join(argv.projectPath, projectName);
27
+ if (!argv.force && fs.existsSync(targetDir)) {
28
+ throw new Error(`project exists: ${projectName}`);
29
+ }
30
+ fse.ensureDirSync(targetDir);
31
+ // vars
32
+ argv.SERVER_KEYS = `vona_${uuid.v4()}_${Date.now()}_${random(100, 10000)}`;
33
+ argv.SERVER_KEYS_PROD = `vona_${uuid.v4()}_${Date.now()}_${random(100, 10000)}`;
34
+ argv.DATABASE_CLIENT_MYSQL_USER = 'web_user';
35
+ argv.DATABASE_CLIENT_MYSQL_PASSWORD = randomize('*', 16, { exclude: '\\\'"$' });
36
+ argv.DATABASE_CLIENT_MYSQL_PASSWORD_ROOT = randomize('*', 16, { exclude: '\\\'"$' });
37
+ argv.DATABASE_CLIENT_PG_USER = 'web_user';
38
+ argv.DATABASE_CLIENT_PG_PASSWORD = randomize('*', 16, { exclude: '\\\'"$' });
39
+ argv.DATABASE_CLIENT_PG_PASSWORD_ROOT = randomize('*', 16, { exclude: '\\\'"$' });
40
+ // template
41
+ const template = argv.template;
42
+ // render project boilerplate
43
+ await this.template.renderBoilerplateAndSnippets({
44
+ targetDir,
45
+ setName: __ThisSetName__,
46
+ snippetsPath: null,
47
+ boilerplatePath: `create/project/${template}/boilerplate`,
48
+ });
49
+ // copy package.json
50
+ fse.copyFileSync(path.join(targetDir, 'package.original.json'), path.join(targetDir, 'package.json'));
51
+ // npm run init
52
+ await this.helper.spawnCmd({
53
+ cmd: 'npm',
54
+ args: ['run', 'init'],
55
+ options: { cwd: targetDir },
56
+ });
57
+ // done
58
+ await this.printUsage(targetDir);
59
+ }
60
+ async printUsage(targetDir) {
61
+ await this.console.log(`usage:
62
+ - cd ${targetDir}
63
+ - pnpm install
64
+ - npm run dev
65
+ - npm run test
66
+ - npm run build
67
+ - npm run start
68
+ `);
69
+ }
70
+ async downloadBoilerplate(packageName) {
71
+ const result = await this.getPackageInfo(packageName, false);
72
+ const tgzUrl = result.dist.tarball;
73
+ await this.console.log(`downloading ${tgzUrl}`);
74
+ const saveDir = path.join(os.tmpdir(), 'zova-project-boilerplate');
75
+ await rimraf(saveDir);
76
+ const response = await this.curl(tgzUrl, { streaming: true, followRedirect: true });
77
+ await compressing.tgz.uncompress(response.res, saveDir);
78
+ await this.console.log(`extract to ${saveDir}`);
79
+ return path.join(saveDir, '/package');
80
+ }
81
+ async getPackageInfo(packageName, withFallback) {
82
+ await this.console.log(`fetching npm info of ${packageName}`);
83
+ try {
84
+ const registry = await this.helper.getRegistry();
85
+ const result = await this.curl(`${registry}${packageName}/latest`, {
86
+ dataType: 'json',
87
+ followRedirect: true,
88
+ maxRedirects: 5,
89
+ });
90
+ if (result.status !== 200) {
91
+ const message = `npm info ${packageName} got error: ${result.status}, ${result.data.reason}`;
92
+ throw new Error(message);
93
+ }
94
+ return result.data;
95
+ }
96
+ catch (err) {
97
+ if (withFallback) {
98
+ await this.console.log(`use fallback from ${packageName}`);
99
+ const require = createRequire(import.meta.url);
100
+ return require(`${packageName}/package.json`);
101
+ }
102
+ throw err;
103
+ }
104
+ }
105
+ async curl(url, options) {
106
+ options = options || {};
107
+ if (!options.timeout) {
108
+ options.timeout = 30000;
109
+ }
110
+ return await this.httpClient.request(url, options);
111
+ }
112
+ }
113
+ function random(start, end) {
114
+ return Math.floor(Math.random() * (end - start) + start);
115
+ }
@@ -1,5 +1,5 @@
1
+ import type { IModuleInfo } from '@cabloy/module-info';
1
2
  import { BeanCliBase } from '@cabloy/cli';
2
- import { IModuleInfo } from '@cabloy/module-info';
3
3
  declare module '@cabloy/cli' {
4
4
  interface ICommandArgv {
5
5
  name: string;
@@ -9,4 +9,3 @@ declare module '@cabloy/cli' {
9
9
  export declare class CliCreateSuite extends BeanCliBase {
10
10
  execute(): Promise<void>;
11
11
  }
12
- //# sourceMappingURL=cli.create.suite.d.ts.map
@@ -1,7 +1,7 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
1
3
  import { BeanCliBase } from '@cabloy/cli';
2
- import fs from 'fs';
3
- import path from 'path';
4
- import { __ThisSetName__ } from '../this.js';
4
+ import { __ThisSetName__ } from "../this.js";
5
5
  export class CliCreateSuite extends BeanCliBase {
6
6
  async execute() {
7
7
  const { argv } = this.context;
@@ -26,12 +26,8 @@ export class CliCreateSuite extends BeanCliBase {
26
26
  }
27
27
  targetDir = await this.helper.ensureDir(targetDir);
28
28
  // templateDir
29
- const templateDir = this.template.resolveTemplatePath({
30
- setName: __ThisSetName__,
31
- path: 'create/suite',
32
- });
29
+ const templateDir = this.template.resolveTemplatePath(__ThisSetName__, 'create/suite');
33
30
  // render
34
- await this.template.renderDir({ targetDir, templateDir });
31
+ await this.template.renderDir(targetDir, templateDir);
35
32
  }
36
33
  }
37
- //# sourceMappingURL=cli.create.suite.js.map
@@ -0,0 +1,15 @@
1
+ import type { NameMeta } from '@cabloy/cli';
2
+ import type { IModuleInfo } from '@cabloy/module-info';
3
+ import { BeanCliBase } from '@cabloy/cli';
4
+ declare module '@cabloy/cli' {
5
+ interface ICommandArgv {
6
+ module: string;
7
+ moduleInfo: IModuleInfo;
8
+ name: string;
9
+ nameCapitalize: string;
10
+ nameMeta: NameMeta;
11
+ }
12
+ }
13
+ export declare class CliCreateTest extends BeanCliBase {
14
+ execute(): Promise<void>;
15
+ }
@@ -0,0 +1,39 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { BeanCliBase } from '@cabloy/cli';
4
+ import { __ThisSetName__ } from "../this.js";
5
+ export class CliCreateTest extends BeanCliBase {
6
+ async execute() {
7
+ const { argv } = this.context;
8
+ // super
9
+ await super.execute();
10
+ // module name/info
11
+ const moduleName = argv.module;
12
+ argv.moduleInfo = this.helper.parseModuleInfo(moduleName);
13
+ // check if exists
14
+ const _module = this.helper.findModule(moduleName);
15
+ if (!_module) {
16
+ throw new Error(`module does not exist: ${moduleName}`);
17
+ }
18
+ // target dir
19
+ const targetDir = await this.helper.ensureDir(_module.root);
20
+ // name
21
+ argv.nameCapitalize = this.helper.firstCharToUpperCase(argv.name);
22
+ // nameMeta
23
+ argv.nameMeta = this.helper.parseNameMeta(argv.name, ['test']);
24
+ // directory
25
+ const testDir = path.join(targetDir, 'test');
26
+ const testFile = path.join(testDir, `${argv.name}.test.ts`);
27
+ if (fs.existsSync(testFile)) {
28
+ throw new Error(`test exists: ${testFile}`);
29
+ }
30
+ await this.helper.ensureDir(testDir);
31
+ // render boilerplate
32
+ await this.template.renderBoilerplateAndSnippets({
33
+ targetDir: testDir,
34
+ setName: __ThisSetName__,
35
+ snippetsPath: null,
36
+ boilerplatePath: 'create/test/boilerplate',
37
+ });
38
+ }
39
+ }
@@ -10,4 +10,3 @@ export declare class CliDefaultList extends BeanCliBase {
10
10
  _setShow({ setShow, groupWant, commandsAll }: any): Promise<void>;
11
11
  _combineCliFullName({ setShow, groupShow, commandName }: any): string;
12
12
  }
13
- //# sourceMappingURL=cli.default.list.d.ts.map
@@ -91,4 +91,3 @@ export class CliDefaultList extends BeanCliBase {
91
91
  return parts.join(':');
92
92
  }
93
93
  }
94
- //# sourceMappingURL=cli.default.list.js.map