lucy-cli 2.0.0-alpha.9 → 2.0.0-beta.2

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 (453) hide show
  1. package/.yarnrc.yml +0 -1
  2. package/README.md +117 -102
  3. package/dist/args.d.ts +1 -6
  4. package/dist/args.js +103 -7
  5. package/dist/args.js.map +1 -0
  6. package/dist/commands/checks.d.ts +7 -0
  7. package/dist/commands/checks.js +47 -0
  8. package/dist/commands/checks.js.map +1 -0
  9. package/dist/commands/cleanup.d.ts +4 -0
  10. package/dist/commands/cleanup.js +10 -0
  11. package/dist/commands/cleanup.js.map +1 -0
  12. package/dist/commands/copy.d.ts +6 -0
  13. package/dist/commands/copy.js +20 -0
  14. package/dist/commands/copy.js.map +1 -0
  15. package/dist/commands/edit.d.ts +10 -0
  16. package/dist/commands/edit.js +67 -0
  17. package/dist/commands/edit.js.map +1 -0
  18. package/dist/commands/exec.d.ts +7 -0
  19. package/dist/commands/exec.js +67 -0
  20. package/dist/commands/exec.js.map +1 -0
  21. package/dist/commands/git.d.ts +8 -0
  22. package/dist/commands/git.js +104 -0
  23. package/dist/commands/git.js.map +1 -0
  24. package/dist/commands/home.d.ts +4 -0
  25. package/dist/commands/home.js +18 -0
  26. package/dist/commands/home.js.map +1 -0
  27. package/dist/commands/install.d.ts +8 -0
  28. package/dist/commands/install.js +165 -0
  29. package/dist/commands/install.js.map +1 -0
  30. package/dist/commands/read.d.ts +6 -0
  31. package/dist/commands/read.js +40 -0
  32. package/dist/commands/read.js.map +1 -0
  33. package/dist/commands/write.d.ts +7 -0
  34. package/dist/commands/write.js +28 -0
  35. package/dist/commands/write.js.map +1 -0
  36. package/dist/commands.js +1 -0
  37. package/dist/commands.js.map +1 -0
  38. package/dist/config.d.ts +29 -7
  39. package/dist/config.js +90 -26
  40. package/dist/config.js.map +1 -0
  41. package/dist/error.d.ts +1 -9
  42. package/dist/error.js +1 -2
  43. package/dist/error.js.map +1 -0
  44. package/dist/helpers.d.ts +9 -0
  45. package/dist/helpers.js +83 -0
  46. package/dist/helpers.js.map +1 -0
  47. package/dist/index.d.ts +1 -0
  48. package/dist/index.js +77 -9
  49. package/dist/index.js.map +1 -0
  50. package/dist/init/blocks.d.ts +5 -0
  51. package/dist/init/blocks.js +62 -0
  52. package/dist/init/blocks.js.map +1 -0
  53. package/dist/init/cargo.d.ts +2 -0
  54. package/dist/init/cargo.js +21 -0
  55. package/dist/init/cargo.js.map +1 -0
  56. package/dist/init/expo.d.ts +5 -0
  57. package/dist/init/expo.js +52 -0
  58. package/dist/init/expo.js.map +1 -0
  59. package/dist/init/gitModules.d.ts +2 -0
  60. package/dist/init/gitModules.js +13 -0
  61. package/dist/init/gitModules.js.map +1 -0
  62. package/dist/init/index.d.ts +4 -0
  63. package/dist/init/index.js +77 -0
  64. package/dist/init/index.js.map +1 -0
  65. package/dist/init/monorepo.d.ts +4 -0
  66. package/dist/init/monorepo.js +48 -0
  67. package/dist/init/monorepo.js.map +1 -0
  68. package/dist/init/prepareVelo.d.ts +2 -0
  69. package/dist/init/prepareVelo.js +16 -0
  70. package/dist/init/prepareVelo.js.map +1 -0
  71. package/dist/init/tauri.d.ts +5 -0
  72. package/dist/init/tauri.js +32 -0
  73. package/dist/init/tauri.js.map +1 -0
  74. package/dist/init/templates.d.ts +5 -0
  75. package/dist/init/templates.js +93 -0
  76. package/dist/init/templates.js.map +1 -0
  77. package/dist/init/velo.d.ts +5 -0
  78. package/dist/init/velo.js +60 -0
  79. package/dist/init/velo.js.map +1 -0
  80. package/dist/policy.js +1 -0
  81. package/dist/policy.js.map +1 -0
  82. package/dist/prepare.js +1 -0
  83. package/dist/prepare.js.map +1 -0
  84. package/dist/runtime.d.ts +1 -1
  85. package/dist/runtime.js +1 -0
  86. package/dist/runtime.js.map +1 -0
  87. package/dist/schemas/gulp.d.ts +25 -0
  88. package/dist/schemas/gulp.js +8 -0
  89. package/dist/schemas/gulp.js.map +1 -0
  90. package/dist/schemas/index.d.ts +10 -0
  91. package/dist/schemas/index.js +9 -0
  92. package/dist/schemas/index.js.map +1 -0
  93. package/dist/schemas/lucy.d.ts +29 -0
  94. package/dist/schemas/lucy.js +42 -0
  95. package/dist/schemas/lucy.js.map +1 -0
  96. package/dist/schemas/tsconfig.js +2 -0
  97. package/dist/schemas/tsconfig.js.map +1 -0
  98. package/dist/schemas/types.d.ts +33 -0
  99. package/dist/schemas/types.js +5 -1
  100. package/dist/schemas/types.js.map +1 -0
  101. package/dist/states.js +1 -0
  102. package/dist/states.js.map +1 -0
  103. package/dist/tasks/Gulpfile.d.ts +4 -0
  104. package/dist/tasks/Gulpfile.js +111 -0
  105. package/dist/tasks/Gulpfile.js.map +1 -0
  106. package/dist/tasks/gulp/backend.d.ts +4 -0
  107. package/dist/tasks/gulp/backend.js +92 -0
  108. package/dist/tasks/gulp/backend.js.map +1 -0
  109. package/dist/tasks/gulp/checks.d.ts +4 -0
  110. package/dist/tasks/gulp/checks.js +202 -0
  111. package/dist/tasks/gulp/checks.js.map +1 -0
  112. package/dist/tasks/gulp/clean.d.ts +3 -0
  113. package/dist/tasks/gulp/clean.js +33 -0
  114. package/dist/tasks/gulp/clean.js.map +1 -0
  115. package/dist/tasks/gulp/copy.d.ts +3 -0
  116. package/dist/tasks/gulp/copy.js +34 -0
  117. package/dist/tasks/gulp/copy.js.map +1 -0
  118. package/dist/tasks/gulp/helpers.d.ts +3 -0
  119. package/dist/tasks/gulp/helpers.js +19 -0
  120. package/dist/tasks/gulp/helpers.js.map +1 -0
  121. package/dist/tasks/gulp/pages.d.ts +2 -0
  122. package/dist/tasks/gulp/pages.js +39 -0
  123. package/dist/tasks/gulp/pages.js.map +1 -0
  124. package/dist/tasks/gulp/pipeline.d.ts +1 -0
  125. package/dist/tasks/gulp/pipeline.js +29 -0
  126. package/dist/tasks/gulp/pipeline.js.map +1 -0
  127. package/dist/tasks/gulp/public.d.ts +3 -0
  128. package/dist/tasks/gulp/public.js +50 -0
  129. package/dist/tasks/gulp/public.js.map +1 -0
  130. package/dist/tasks/gulp/styles.d.ts +3 -0
  131. package/dist/tasks/gulp/styles.js +40 -0
  132. package/dist/tasks/gulp/styles.js.map +1 -0
  133. package/dist/tasks/gulp/templates.d.ts +2 -0
  134. package/dist/tasks/gulp/templates.js +45 -0
  135. package/dist/tasks/gulp/templates.js.map +1 -0
  136. package/dist/tasks/gulp/types.d.ts +4 -0
  137. package/dist/tasks/gulp/types.js +293 -0
  138. package/dist/tasks/gulp/types.js.map +1 -0
  139. package/dist/tasks/gulp/watchers.d.ts +3 -0
  140. package/dist/tasks/gulp/watchers.js +59 -0
  141. package/dist/tasks/gulp/watchers.js.map +1 -0
  142. package/dist/tasks/index.d.ts +4 -0
  143. package/dist/tasks/index.js +23 -0
  144. package/dist/tasks/index.js.map +1 -0
  145. package/dist/tasks/syncSettings.d.ts +3 -0
  146. package/dist/tasks/syncSettings.js +18 -0
  147. package/dist/tasks/syncSettings.js.map +1 -0
  148. package/dist/utils/index.js +2 -0
  149. package/dist/utils/index.js.map +1 -0
  150. package/dist/utils/logger.d.ts +17 -0
  151. package/dist/utils/logger.js +37 -0
  152. package/dist/utils/logger.js.map +1 -0
  153. package/dist/wix-sdk/check.d.ts +4 -0
  154. package/dist/wix-sdk/check.js +23 -0
  155. package/dist/wix-sdk/check.js.map +1 -0
  156. package/dist/wix-sdk/client.d.ts +10 -0
  157. package/dist/wix-sdk/client.js +18 -0
  158. package/dist/wix-sdk/client.js.map +1 -0
  159. package/dist/wix-sdk/index.d.ts +4 -0
  160. package/dist/wix-sdk/index.js +15 -0
  161. package/dist/wix-sdk/index.js.map +1 -0
  162. package/dist/wix-sdk/init.d.ts +4 -0
  163. package/dist/wix-sdk/init.js +51 -0
  164. package/dist/wix-sdk/init.js.map +1 -0
  165. package/dist/wix-sdk/run.d.ts +4 -0
  166. package/dist/wix-sdk/run.js +53 -0
  167. package/dist/wix-sdk/run.js.map +1 -0
  168. package/dist/wix-sync/client.d.ts +3 -0
  169. package/dist/wix-sync/client.js +5 -0
  170. package/dist/wix-sync/client.js.map +1 -0
  171. package/dist/wix-sync/export.d.ts +4 -0
  172. package/dist/wix-sync/export.js +15 -0
  173. package/dist/wix-sync/export.js.map +1 -0
  174. package/dist/wix-sync/import.d.ts +4 -0
  175. package/dist/wix-sync/import.js +26 -0
  176. package/dist/wix-sync/import.js.map +1 -0
  177. package/dist/wix-sync/index.d.ts +4 -0
  178. package/dist/wix-sync/index.js +35 -0
  179. package/dist/wix-sync/index.js.map +1 -0
  180. package/dist/wix-sync/init.d.ts +4 -0
  181. package/dist/wix-sync/init.js +74 -0
  182. package/dist/wix-sync/init.js.map +1 -0
  183. package/dist/wix-sync/is-alive.d.ts +4 -0
  184. package/dist/wix-sync/is-alive.js +23 -0
  185. package/dist/wix-sync/is-alive.js.map +1 -0
  186. package/dist/wix-sync/migrate.d.ts +4 -0
  187. package/dist/wix-sync/migrate.js +21 -0
  188. package/dist/wix-sync/migrate.js.map +1 -0
  189. package/dist/wix-sync/sync.d.ts +4 -0
  190. package/dist/wix-sync/sync.js +26 -0
  191. package/dist/wix-sync/sync.js.map +1 -0
  192. package/files/sync-data/data/test.csv +17 -0
  193. package/files/sync-data/files/lucy.jpg +0 -0
  194. package/files/sync-data/schema/test.json +11 -0
  195. package/files/templates/block[D]/files/.stylelintrc.js +8 -0
  196. package/files/templates/block[D]/lucy.json +9 -0
  197. package/files/templates/cargo[D]/files/.env +1 -0
  198. package/files/templates/cargo[D]/files/Cargo.toml +238 -0
  199. package/files/templates/cargo[D]/files/Makefile.toml +4 -0
  200. package/files/templates/cargo[D]/files/build/main.rs +35 -0
  201. package/files/templates/cargo[D]/files/config/beta.json +19 -0
  202. package/files/templates/cargo[D]/files/config/ci.json +15 -0
  203. package/files/templates/cargo[D]/files/config/default.json +71 -0
  204. package/files/templates/cargo[D]/files/config/development.json +10 -0
  205. package/files/templates/cargo[D]/files/config/produktion.json +5 -0
  206. package/files/templates/cargo[D]/files/config/stage.json +4 -0
  207. package/files/templates/cargo[D]/files/locales/todo.yml +3 -0
  208. package/files/templates/cargo[D]/files/public/index.html +1 -0
  209. package/files/templates/cargo[D]/lucy.json +15 -0
  210. package/files/templates/expo[D]/files/.stylelintrc.js +8 -0
  211. package/files/{expo → templates/expo[D]/files}/eas.json +9 -3
  212. package/files/templates/expo[D]/files/lib/data.ts +197 -0
  213. package/files/{expo → templates/expo[D]/files}/metro.config.js +6 -0
  214. package/files/templates/expo[D]/files/pnpm-workspace.yaml +3 -0
  215. package/files/templates/expo[D]/lucy.json +86 -0
  216. package/files/templates/monorepo[D]/files/.editorconfig +10 -0
  217. package/files/templates/monorepo[D]/files/.nvmrc +1 -0
  218. package/files/templates/monorepo[D]/files/.prettierignore +23 -0
  219. package/files/templates/monorepo[D]/files/.prettierrc.json +15 -0
  220. package/files/templates/monorepo[D]/files/.stylelintrc.js +8 -0
  221. package/files/templates/monorepo[D]/files/.yarnrc +1 -0
  222. package/files/templates/monorepo[D]/files/.yarnrc.yml +3 -0
  223. package/files/templates/monorepo[D]/files/README.md +109 -0
  224. package/files/templates/monorepo[D]/files/currents.config.ts +5 -0
  225. package/files/templates/monorepo[D]/files/nx.json +25 -0
  226. package/files/templates/monorepo[D]/files/pnpm-workspace.yaml +11 -0
  227. package/files/templates/monorepo[D]/files/tsconfig.json +6 -0
  228. package/files/templates/monorepo[D]/files/typedoc.json +25 -0
  229. package/files/templates/monorepo[D]/files/vitest.config.ts +27 -0
  230. package/files/templates/monorepo[D]/lucy.json +69 -0
  231. package/files/templates/tauri[D]/lucy.json +9 -0
  232. package/files/templates/velo[D]/files/.prettierignore +23 -0
  233. package/files/templates/velo[D]/files/.prettierrc.js +16 -0
  234. package/files/templates/velo[D]/lucy.json +137 -0
  235. package/lucy.jpg +0 -0
  236. package/old/Gulpfile.d.ts +34 -0
  237. package/old/Gulpfile.js +116 -0
  238. package/old/Gulpfile.js.map +1 -0
  239. package/old/gulp/backend.d.ts +3 -0
  240. package/old/gulp/backend.js +92 -0
  241. package/old/gulp/backend.js.map +1 -0
  242. package/old/gulp/checks.d.ts +3 -0
  243. package/old/gulp/checks.js +205 -0
  244. package/old/gulp/checks.js.map +1 -0
  245. package/old/gulp/clean.d.ts +3 -0
  246. package/old/gulp/clean.js +29 -0
  247. package/old/gulp/clean.js.map +1 -0
  248. package/old/gulp/copy.d.ts +2 -0
  249. package/old/gulp/copy.js +34 -0
  250. package/old/gulp/copy.js.map +1 -0
  251. package/old/gulp/helpers.d.ts +2 -0
  252. package/old/gulp/helpers.js +25 -0
  253. package/old/gulp/helpers.js.map +1 -0
  254. package/old/gulp/pages.d.ts +2 -0
  255. package/old/gulp/pages.js +37 -0
  256. package/old/gulp/pages.js.map +1 -0
  257. package/old/gulp/pipeline.d.ts +1 -0
  258. package/old/gulp/pipeline.js +29 -0
  259. package/old/gulp/pipeline.js.map +1 -0
  260. package/old/gulp/public.d.ts +2 -0
  261. package/old/gulp/public.js +50 -0
  262. package/old/gulp/public.js.map +1 -0
  263. package/old/gulp/styles.d.ts +2 -0
  264. package/old/gulp/styles.js +40 -0
  265. package/old/gulp/styles.js.map +1 -0
  266. package/old/gulp/templates.d.ts +2 -0
  267. package/old/gulp/templates.js +33 -0
  268. package/old/gulp/templates.js.map +1 -0
  269. package/old/gulp/types.d.ts +4 -0
  270. package/old/gulp/types.js +289 -0
  271. package/old/gulp/types.js.map +1 -0
  272. package/old/gulp/watchers.d.ts +9 -0
  273. package/old/gulp/watchers.js +59 -0
  274. package/old/gulp/watchers.js.map +1 -0
  275. package/old/helpers.d.ts +32 -0
  276. package/old/helpers.js +267 -0
  277. package/old/helpers.js.map +1 -0
  278. package/{src copy/helpers.ts → old/helpers.ts} +1 -1
  279. package/old/index.d.ts +59 -0
  280. package/old/index.js +288 -0
  281. package/old/index.js.map +1 -0
  282. package/old/init.d.ts +8 -0
  283. package/old/init.js +165 -0
  284. package/old/init.js.map +1 -0
  285. package/old/models.d.ts +37 -0
  286. package/old/models.js +2 -0
  287. package/old/models.js.map +1 -0
  288. package/old/prepare.d.ts +8 -0
  289. package/old/prepare.js +20 -0
  290. package/old/prepare.js.map +1 -0
  291. package/old/schemas/index.js +2 -0
  292. package/old/schemas/index.js.map +1 -0
  293. package/old/schemas/index.ts +0 -0
  294. package/old/schemas/types.d.ts +0 -0
  295. package/old/schemas/types.js +2 -0
  296. package/old/schemas/types.js.map +1 -0
  297. package/old/schemas/types.ts +0 -0
  298. package/old/sync.d.ts +2 -0
  299. package/old/sync.js +88 -0
  300. package/old/sync.js.map +1 -0
  301. package/package.json +18 -19
  302. package/patches/velo-sync+0.0.9.patch +13 -0
  303. package/src/args.ts +103 -17
  304. package/src/commands/checks.ts +51 -0
  305. package/src/commands/cleanup.ts +11 -0
  306. package/src/commands/copy.ts +28 -0
  307. package/src/commands/edit.ts +81 -0
  308. package/src/commands/exec.ts +69 -0
  309. package/src/commands/git.ts +113 -0
  310. package/src/commands/home.ts +22 -0
  311. package/src/commands/install.ts +249 -0
  312. package/src/commands/read.ts +45 -0
  313. package/src/commands/write.ts +45 -0
  314. package/src/config.ts +116 -35
  315. package/src/error.ts +1 -2
  316. package/src/helpers.ts +92 -0
  317. package/src/index.ts +88 -13
  318. package/src/init/blocks.ts +85 -0
  319. package/src/init/cargo.ts +25 -0
  320. package/src/init/expo.ts +69 -0
  321. package/src/init/gitModules.ts +15 -0
  322. package/src/init/index.ts +81 -0
  323. package/src/init/monorepo.ts +72 -0
  324. package/src/init/prepareVelo.ts +19 -0
  325. package/src/init/tauri.ts +42 -0
  326. package/src/init/templates.ts +98 -0
  327. package/src/init/velo.ts +65 -0
  328. package/src/runtime.ts +1 -0
  329. package/src/schemas/gulp.ts +31 -0
  330. package/src/schemas/index.ts +13 -1
  331. package/src/schemas/lucy.ts +43 -0
  332. package/src/schemas/types.ts +40 -0
  333. package/src/tasks/Gulpfile.ts +207 -0
  334. package/src/tasks/gulp/backend.ts +113 -0
  335. package/src/tasks/gulp/checks.ts +218 -0
  336. package/src/tasks/gulp/clean.ts +38 -0
  337. package/src/tasks/gulp/copy.ts +38 -0
  338. package/src/tasks/gulp/helpers.ts +18 -0
  339. package/src/tasks/gulp/pages.ts +43 -0
  340. package/src/tasks/gulp/pipeline.ts +31 -0
  341. package/src/tasks/gulp/public.ts +61 -0
  342. package/src/tasks/gulp/styles.ts +47 -0
  343. package/src/tasks/gulp/templates.ts +53 -0
  344. package/src/tasks/gulp/types.ts +310 -0
  345. package/src/tasks/gulp/watchers.ts +97 -0
  346. package/src/tasks/index.ts +24 -0
  347. package/src/tasks/syncSettings.ts +21 -0
  348. package/src/types.d.ts +1 -1
  349. package/src/utils/index.ts +0 -0
  350. package/src/utils/logger.ts +40 -0
  351. package/src/wix-sdk/check.ts +24 -0
  352. package/src/wix-sdk/client.ts +18 -0
  353. package/src/wix-sdk/index.ts +17 -0
  354. package/src/wix-sdk/init.ts +54 -0
  355. package/src/wix-sdk/run.ts +56 -0
  356. package/src/wix-sync/client.ts +6 -0
  357. package/src/wix-sync/export.ts +19 -0
  358. package/src/wix-sync/import.ts +27 -0
  359. package/src/wix-sync/index.ts +36 -0
  360. package/src/wix-sync/init.ts +77 -0
  361. package/src/wix-sync/is-alive.ts +25 -0
  362. package/src/wix-sync/migrate.ts +23 -0
  363. package/src/wix-sync/sync.ts +27 -0
  364. package/tsconfig.json +6 -5
  365. package/dist/init.d.ts +0 -4
  366. package/dist/init.js +0 -275
  367. package/dist/models.js +0 -1
  368. package/dist/params.d.ts +0 -7
  369. package/dist/params.js +0 -23
  370. package/files/expo/lib/data.ts +0 -48
  371. package/files/expo/lucy.json +0 -8
  372. package/src/init.ts +0 -392
  373. /package/dist/{models.d.ts → schemas/tsconfig.d.ts} +0 -0
  374. /package/{files/expo/components/.gitkeep → dist/utils/index.d.ts} +0 -0
  375. /package/files/{expo → templates/expo[D]/files}/.nvmrc +0 -0
  376. /package/files/{expo → templates/expo[D]/files}/.prettierignore +0 -0
  377. /package/files/{expo → templates/expo[D]/files}/.prettierrc.js +0 -0
  378. /package/files/{expo → templates/expo[D]/files}/.yarnrc +0 -0
  379. /package/files/{expo → templates/expo[D]/files}/.yarnrc.yml +0 -0
  380. /package/files/{expo → templates/expo[D]/files}/README.md +0 -0
  381. /package/files/{expo → templates/expo[D]/files}/assets/fonts/SpaceMono-Regular.ttf +0 -0
  382. /package/files/{expo → templates/expo[D]/files}/assets/images/adaptive-icon.png +0 -0
  383. /package/files/{expo → templates/expo[D]/files}/assets/images/favicon.png +0 -0
  384. /package/files/{expo → templates/expo[D]/files}/assets/images/icon.png +0 -0
  385. /package/files/{expo → templates/expo[D]/files}/assets/images/splash-icon.png +0 -0
  386. /package/files/{expo → templates/expo[D]/files}/babel.config.js +0 -0
  387. /package/files/{expo/components/ui → templates/expo[D]/files/components}/.gitkeep +0 -0
  388. /package/files/{velo/typescript/__mocks__ → templates/expo[D]/files/components/ui}/.gitkeep +0 -0
  389. /package/files/{expo → templates/expo[D]/files}/constants/theme.ts +0 -0
  390. /package/files/{expo → templates/expo[D]/files}/eslint.config.mjs +0 -0
  391. /package/files/{expo → templates/expo[D]/files}/global.css +0 -0
  392. /package/files/{expo → templates/expo[D]/files}/hooks/useColorScheme.ts +0 -0
  393. /package/files/{expo → templates/expo[D]/files}/index.ts +0 -0
  394. /package/files/{expo → templates/expo[D]/files}/lib/utils/index.ts +0 -0
  395. /package/files/{expo → templates/expo[D]/files}/lib/utils/polyfills.ts +0 -0
  396. /package/files/{expo → templates/expo[D]/files}/lib/wix/client.ts +0 -0
  397. /package/files/{expo → templates/expo[D]/files}/lib/wix/error.ts +0 -0
  398. /package/files/{expo → templates/expo[D]/files}/lib/wix/index.ts +0 -0
  399. /package/files/{expo → templates/expo[D]/files}/nativewind-env.d.ts +0 -0
  400. /package/files/{expo → templates/expo[D]/files}/scripts/reset-project.ts +0 -0
  401. /package/files/{expo → templates/expo[D]/files}/tailwind.config.js +0 -0
  402. /package/files/{expo → templates/expo[D]/files}/tsconfig.json +0 -0
  403. /package/files/{expo → templates/expo[D]/files}/types/reset.d.ts +0 -0
  404. /package/files/{velo → templates/velo[D]/files}/.gitmodules +0 -0
  405. /package/files/{velo → templates/velo[D]/files}/.madgerc +0 -0
  406. /package/files/{velo → templates/velo[D]/files}/.nvmrc +0 -0
  407. /package/files/{velo → templates/velo[D]/files}/.stylelintrc.js +0 -0
  408. /package/files/{velo → templates/velo[D]/files}/.yarnrc.yml +0 -0
  409. /package/files/{velo → templates/velo[D]/files}/currents.config.js +0 -0
  410. /package/files/{velo → templates/velo[D]/files}/cypress/e2e/base/base.cy.ts +0 -0
  411. /package/files/{velo → templates/velo[D]/files}/cypress/fixtures/example.json +0 -0
  412. /package/files/{velo → templates/velo[D]/files}/cypress/support/commands.ts +0 -0
  413. /package/files/{velo → templates/velo[D]/files}/cypress/support/e2e.ts +0 -0
  414. /package/files/{velo → templates/velo[D]/files}/cypress/tsconfig.json +0 -0
  415. /package/files/{velo → templates/velo[D]/files}/cypress.config.mjs +0 -0
  416. /package/files/{velo → templates/velo[D]/files}/eslint.config.mjs +0 -0
  417. /package/files/{velo → templates/velo[D]/files}/local.tsconfig.json +0 -0
  418. /package/files/{velo → templates/velo[D]/files}/typedoc.json +0 -0
  419. /package/files/{velo/typescript/pages → templates/velo[D]/files/typescript/__mocks__}/.gitkeep +0 -0
  420. /package/files/{velo → templates/velo[D]/files}/typescript/backend/data.ts +0 -0
  421. /package/files/{velo → templates/velo[D]/files}/typescript/backend/events.ts +0 -0
  422. /package/files/{velo → templates/velo[D]/files}/typescript/backend/http-functions.ts +0 -0
  423. /package/files/{velo → templates/velo[D]/files}/typescript/backend/lib/http-functions/sync.ts +0 -0
  424. /package/files/{velo → templates/velo[D]/files}/typescript/backend/permissions.json +0 -0
  425. /package/files/{velo/typescript/public → templates/velo[D]/files/typescript/pages}/.gitkeep +0 -0
  426. /package/files/{velo/typescript/styles → templates/velo[D]/files/typescript/public}/.gitkeep +0 -0
  427. /package/files/{velo → templates/velo[D]/files}/typescript/public/scss/app.scss +0 -0
  428. /package/files/{velo/typescript/styles/global.scss → templates/velo[D]/files/typescript/styles/.gitkeep} +0 -0
  429. /package/{src copy/schemas/index.ts → files/templates/velo[D]/files/typescript/styles/global.scss} +0 -0
  430. /package/files/{velo → templates/velo[D]/files}/typescript/tsconfig.json +0 -0
  431. /package/files/{velo → templates/velo[D]/files}/vitest.config.ts +0 -0
  432. /package/{src copy → old}/Gulpfile.ts +0 -0
  433. /package/{src copy → old}/gulp/backend.ts +0 -0
  434. /package/{src copy → old}/gulp/checks.ts +0 -0
  435. /package/{src copy → old}/gulp/clean.ts +0 -0
  436. /package/{src copy → old}/gulp/copy.ts +0 -0
  437. /package/{src copy → old}/gulp/helpers.ts +0 -0
  438. /package/{src copy → old}/gulp/pages.ts +0 -0
  439. /package/{src copy → old}/gulp/pipeline.ts +0 -0
  440. /package/{src copy → old}/gulp/public.ts +0 -0
  441. /package/{src copy → old}/gulp/styles.ts +0 -0
  442. /package/{src copy → old}/gulp/templates.ts +0 -0
  443. /package/{src copy → old}/gulp/types.ts +0 -0
  444. /package/{src copy → old}/gulp/watchers.ts +0 -0
  445. /package/{src copy → old}/index.ts +0 -0
  446. /package/{src copy → old}/init.ts +0 -0
  447. /package/{src copy → old}/models.ts +0 -0
  448. /package/{src copy → old}/prepare.ts +0 -0
  449. /package/{src copy/schemas/types.ts → old/schemas/index.d.ts} +0 -0
  450. /package/{src copy → old}/settings.json +0 -0
  451. /package/{src copy → old}/sync.ts +0 -0
  452. /package/{src copy → old}/types.d.ts +0 -0
  453. /package/src/{models.ts → schemas/tsconfig.ts} +0 -0
package/src/index.ts CHANGED
@@ -1,36 +1,111 @@
1
1
  #!/usr/bin/env node
2
- import { Chunk, Duration, Effect, pipe, Schedule, Array, Ref } from "effect";
2
+ import { Effect, pipe} from "effect";
3
3
  import { build_runtime } from "./runtime.js";
4
4
  import { get_args } from "./args.js";
5
5
  import 'dotenv/config'
6
6
  import { Config } from "./config.js";
7
- import { ServiceInspectState } from "./states.js";
8
- import { init } from "./init.js";
7
+ import { init } from "./init/index.js";
8
+ import { logger } from "./utils/logger.js";
9
+ import { open } from "./commands/exec.js";
10
+ import { tasks } from "./tasks/index.js";
11
+ import { cleanupWatchers, killAllProcesses } from "./helpers.js";
12
+ import { wix_sync } from "./wix-sync/index.js";
13
+ import { wix_sdk } from "./wix-sdk/index.js";
9
14
 
15
+ let exitReason: 'SIGINT' | 'SIGTERM' | 'none' = 'none'
16
+ let needsCleanup = false;
17
+
18
+ export function setNeedsCleanup(value: boolean) {
19
+ needsCleanup = value;
20
+ }
21
+ process.on('exit', (code) => {
22
+ if(!needsCleanup) return;
23
+ if(exitReason === 'none') {
24
+ killAllProcesses('@wix/cli/bin/wix.cjs'); // Matches processes running the Wix CLI
25
+ killAllProcesses('wix:dev');
26
+ cleanupWatchers();
27
+ }
28
+
29
+ logger.info(`🛑 Process exited with code: ${code}`);
30
+ });
31
+
32
+ process.on('SIGINT', () => {
33
+ exitReason = "SIGINT";
34
+
35
+ logger.info(`🐕 Received Ctrl+C (SIGINT), cleaning up...`);
36
+ killAllProcesses('@wix/cli/bin/wix.cjs'); // Matches processes running the Wix CLI
37
+ killAllProcesses('wix:dev');
38
+ cleanupWatchers();
39
+ process.exit(); // Exit explicitly after handling
40
+ });
41
+
42
+ process.on('SIGTERM', () => {
43
+ exitReason = "SIGTERM";
44
+
45
+ logger.info(`🛑 Received termination signal (SIGTERM), cleaning up...`);
46
+ killAllProcesses('@wix/cli/bin/wix.cjs'); // Matches processes running the Wix CLI
47
+ killAllProcesses('wix:dev');
48
+ cleanupWatchers();
49
+ process.exit(); // Exit explicitly after handling
50
+ });
10
51
 
11
52
  const lucyCLI = pipe(
12
53
  Effect.gen(function* (_) {
13
54
  const config = yield* Config;
14
- config.config.action.type;
15
- if (config.config.action.type === undefined) {
16
- return yield* Effect.fail("No Params Provided");
17
- }
18
55
  if (config.config.action.action === 'init') {
19
- return yield* init();
56
+ return yield* init;
57
+ }
58
+ if (config.config.action.action === 'open') {
59
+ return yield* open;
60
+ }
61
+ if (config.config.action.action === 'task') {
62
+ return yield* tasks;
63
+ }
64
+ if (config.config.action.action === 'wix-sync') {
65
+ return yield* wix_sync;
66
+ }
67
+ if (config.config.action.action === 'wix-sdk') {
68
+ return yield* wix_sdk;
20
69
  }
21
-
22
-
23
70
  }),
71
+ ).pipe(
72
+ Effect.catchTags({
73
+ BadArgument: (error) => {
74
+ logger.error(JSON.stringify(error, null, 2));
75
+ return Effect.fail(new Error(error.message));
76
+ },
77
+ ParseError: (error) => {
78
+ logger.error("Failed to parse:", JSON.stringify(error, null, 2));
79
+ return Effect.fail(new Error("Failed to parse: " + error.message));
80
+ },
81
+ SystemError: (error) => {
82
+ logger.error("System error:", JSON.stringify(error, null, 2));
83
+ return Effect.fail(new Error("System error: " + error.message));
84
+ },
85
+ AppError: (error) => {
86
+ logger.error("Application error:", JSON.stringify(error, null, 2));
87
+ return Effect.fail(new Error("Application error: " + error.message));
88
+ }
89
+ })
24
90
  )
25
91
 
26
92
  async function main() {
27
93
  const args = await get_args();
28
94
  const runtime= build_runtime(args);
29
95
  // The runtime will handle logging failures. This will catch unhandled defects.
30
- await runtime.runPromise(lucyCLI)
96
+ const program = Effect.orDieWith(
97
+ lucyCLI,
98
+ (error) => new Error(`The application failed to run: ${error}`
99
+ )
100
+ )
101
+ await runtime.runPromise(program)
31
102
  }
32
103
 
33
- main().catch((error) => {
34
- console.error("An unexpected application error occurred:", error);
104
+ main().then(() => {
105
+ process.exit(0);
106
+ }).catch((error) => {
107
+ if (error instanceof Error) {
108
+ logger.error(error.message);
109
+ }
35
110
  process.exit(1);
36
111
  });
@@ -0,0 +1,85 @@
1
+ import { Effect, Schema } from "effect/index"
2
+ import { Config, lucyJsonName } from "../config.js";
3
+ import { Command, FileSystem, Path } from "@effect/platform"
4
+ import { JsonSchema } from "../schemas/index.js";
5
+ import { logger } from "../utils/logger.js";
6
+ import { mergeAdditions, mergeLucySettings2PackageJson, setInitialized } from "../commands/edit.js";
7
+ import { writeLucySettings, writePackageJson } from "../commands/write.js";
8
+ import { copyTemplateFiles } from "../commands/copy.js";
9
+ import { readPackageJson } from "../commands/read.js";
10
+ import { execCommand, openVSCode } from "../commands/exec.js";
11
+ import { approveBuilds, installPackages } from "../commands/install.js";
12
+ import { AppError } from "../error.js";
13
+ import { cleanup } from "../commands/cleanup.js";
14
+ import { checkForDirty } from "../commands/checks.js";
15
+
16
+ export const init_blocks = () => {
17
+ return Effect.gen(function*() {
18
+ const config = yield* Config;
19
+ const fs = yield* FileSystem.FileSystem;
20
+ const path = yield* Path.Path;
21
+
22
+ logger.action("Initializing Blocks project...");
23
+
24
+ const configJsonRaw = yield* fs.readFile("wix.config.json").pipe(Effect.catchAll((error) => {
25
+ return Effect.succeed('{}');
26
+ }))
27
+ const configJson = Schema.decodeUnknownSync(JsonSchema)(configJsonRaw.toString()) as any;
28
+ const blocksAppReady = configJson.appId ? true : false;
29
+
30
+ yield* checkForDirty();
31
+
32
+ if(!blocksAppReady) {
33
+ const initBlocks = Command.make("npm", "create", "@wix/app@latest", config.config.projectName).pipe(
34
+ Command.stdin("inherit"),
35
+ Command.stdout("inherit"),
36
+ Command.stderr("inherit"),
37
+ Command.exitCode
38
+ )
39
+ if((yield* initBlocks) !== 0) {
40
+ yield* Effect.fail(new AppError({ message: "Failed to initialize Blocks project. Please check the error message above.", cause: new Error("Failed to initialize Blocks project") }));
41
+ }
42
+ const files = yield * fs.readDirectory(config.config.cwd, { recursive: false });
43
+
44
+ const allExcludes = ['.git', lucyJsonName];
45
+ const filteredFiles = files.filter(file => !allExcludes.includes(file));
46
+
47
+ const t = yield* fs.stat(filteredFiles[0]);
48
+ t.type === 'Directory'
49
+
50
+ const directories = yield* Effect.filter(
51
+ filteredFiles,
52
+ (file) => Effect.gen(function*() {
53
+ const fullPath = path.join(config.config.cwd, file);
54
+ const stat = yield* fs.stat(fullPath);
55
+ return stat.type === "Directory";
56
+ })
57
+ );
58
+ const tempPath = directories[0];
59
+
60
+ const projectFiles = yield* fs.readDirectory(directories[0])
61
+ yield* Effect.forEach(
62
+ projectFiles.filter(file => file !== '.git'),
63
+ (file) => fs.copy(path.join(tempPath, file), path.join(config.config.cwd, file), { overwrite: true }),
64
+ { discard: true }
65
+ )
66
+ yield* fs.remove(tempPath, { recursive: true })
67
+ }
68
+
69
+ yield* readPackageJson;
70
+ yield* mergeLucySettings2PackageJson;
71
+ yield* mergeAdditions;
72
+ yield* writeLucySettings;
73
+ yield* writePackageJson;
74
+ yield* copyTemplateFiles;
75
+ yield* execCommand;
76
+ yield* installPackages();
77
+ yield* approveBuilds;
78
+ yield* cleanup;
79
+ yield* setInitialized;
80
+
81
+ logger.success("Blocks project initialized successfully!");
82
+
83
+ yield* openVSCode;
84
+ })
85
+ }
@@ -0,0 +1,25 @@
1
+ import { Effect } from "effect/index"
2
+ import { logger } from "../utils/logger.js";
3
+ import { writeLucySettings } from "../commands/write.js";
4
+ import { copyTemplateFiles } from "../commands/copy.js";
5
+ import { gitInit } from "../commands/git.js";
6
+ import { checkForDirty } from "../commands/checks.js";
7
+ import { setInitialized } from "../commands/edit.js";
8
+ import { openVSCode } from "../commands/exec.js";
9
+
10
+ export const init_cargo = () => {
11
+ return Effect.gen(function*() {
12
+ logger.action("Initializing Cargo project...");
13
+
14
+ yield* checkForDirty();
15
+
16
+ yield* copyTemplateFiles;
17
+ yield* writeLucySettings;
18
+ yield* gitInit();
19
+ yield* setInitialized;
20
+
21
+ logger.success("Cargo project initialized successfully!");
22
+
23
+ yield* openVSCode;
24
+ })
25
+ }
@@ -0,0 +1,69 @@
1
+ import { Effect, Schema } from "effect/index"
2
+ import { Config } from "../config.js";
3
+ import { Command, FileSystem, Path } from "@effect/platform"
4
+ import { JsonSchema } from "../schemas/index.js";
5
+ import { logger } from "../utils/logger.js";
6
+ import { mergeAdditions, mergeLucySettings2PackageJson, setInitialized } from "../commands/edit.js";
7
+ import { writeLucySettings, writePackageJson } from "../commands/write.js";
8
+ import { copyTemplateFiles } from "../commands/copy.js";
9
+ import { readPackageJson } from "../commands/read.js";
10
+ import { execCommand, openVSCode } from "../commands/exec.js";
11
+ import { approveBuilds, installPackages } from "../commands/install.js";
12
+ import { AppError } from "../error.js";
13
+ import { cleanup } from "../commands/cleanup.js";
14
+ import { checkForDirty } from "../commands/checks.js";
15
+
16
+ export const init_expo = () => {
17
+ return Effect.gen(function*() {
18
+ const config = yield* Config;
19
+ const fs = yield* FileSystem.FileSystem;
20
+ const path = yield* Path.Path;
21
+
22
+ logger.action("Initializing Expo project...");
23
+
24
+ const appJsonRaw = yield* fs.readFile("app.json").pipe(Effect.catchAll((error) => {
25
+ return Effect.succeed('{}');
26
+ }))
27
+ const appJSON = Schema.decodeUnknownSync(JsonSchema)(appJsonRaw.toString()) as any;
28
+ const expoAppReady = appJSON.expo ? true : false;
29
+
30
+ yield* checkForDirty();
31
+
32
+ if(!expoAppReady) {
33
+ const initExpo = Command.make("npx", "create-expo-app@latest", config.config.projectName, "--template", "blank-typescript", "--no-install").pipe(
34
+ Command.stdout("inherit"),
35
+ Command.stderr("inherit"),
36
+ Command.exitCode
37
+ )
38
+ if((yield* initExpo) !== 0) {
39
+ yield* Effect.fail(new AppError({ message: "Failed to initialize Expo project. Please check the error message above.", cause: new Error("Failed to initialize Expo project") }));
40
+ }
41
+
42
+ const tempPath = path.join(config.config.cwd, config.config.projectName)
43
+
44
+ const projectFiles = yield* fs.readDirectory(tempPath)
45
+ yield* Effect.forEach(
46
+ projectFiles.filter(file => file !== '.git'),
47
+ (file) => fs.copy(path.join(tempPath, file), path.join(config.config.cwd, file), { overwrite: true }),
48
+ { discard: true }
49
+ )
50
+ yield* fs.remove(tempPath, { recursive: true })
51
+ }
52
+
53
+ yield* readPackageJson;
54
+ yield* mergeLucySettings2PackageJson;
55
+ yield* mergeAdditions;
56
+ yield* writeLucySettings;
57
+ yield* writePackageJson;
58
+ yield* copyTemplateFiles;
59
+ yield* execCommand;
60
+ yield* installPackages();
61
+ yield* approveBuilds;
62
+ yield* cleanup;
63
+ yield* setInitialized;
64
+
65
+ logger.success("Expo project initialized successfully!");
66
+
67
+ yield* openVSCode;
68
+ })
69
+ }
@@ -0,0 +1,15 @@
1
+ import { Effect } from "effect/index"
2
+ import { logger } from "../utils/logger.js";
3
+ import { setInitialized } from "../commands/edit.js";
4
+ import { gitInit } from "../commands/git.js";
5
+
6
+ export const init_submodules = () => {
7
+ return Effect.gen(function*() {
8
+ logger.action("Initializing Git submodules project...");
9
+
10
+ yield* gitInit(true);
11
+ yield* setInitialized;
12
+
13
+ logger.success("GIT initialized successfully!");
14
+ })
15
+ }
@@ -0,0 +1,81 @@
1
+ import { Effect, Schema } from "effect/index"
2
+ import { Config } from "../config.js";
3
+ import { init_expo } from "./expo.js";
4
+ import { selectTemplate } from "./templates.js";
5
+ import Enquirer from "enquirer";
6
+ import { AppError } from "../error.js";
7
+ import { createLucyHome } from "../commands/home.js";
8
+ import { readLucyJsonFromTemplate } from "../commands/read.js";
9
+ import { init_monorepo } from "./monorepo.js";
10
+ import { init_cargo } from "./cargo.js";
11
+ import { init_blocks } from "./blocks.js";
12
+ import { init_velo } from "./velo.js";
13
+ import { init_submodules } from "./gitModules.js";
14
+ import { init_tauri } from "./tauri.js";
15
+ import { pkgManagers } from "../schemas/lucy.js";
16
+
17
+
18
+ export const init = Effect.gen(function* (_) {
19
+ const config = yield* Config;
20
+ if(config.config.action.initType === undefined) {
21
+ return yield* Effect.fail(new AppError({ message: "No init type provided", cause: new Error("No init type provided") }));
22
+ }
23
+ yield* createLucyHome();
24
+ const projectName = config.config.cwd.split('/').pop() || 'expo-project';
25
+ const templateQuestion = new Enquirer();
26
+ const choice = yield* Effect.tryPromise({
27
+ try: () => templateQuestion.prompt({
28
+ type: 'input',
29
+ name: 'projectName',
30
+ message: 'Enter a project name',
31
+ initial: projectName,
32
+ validate: (value: string) => value.trim() !== '' ? true : 'Project name cannot be empty'
33
+ }),
34
+ catch: (e) => {
35
+ return new AppError({ cause: e, message: 'Error selecting template' });
36
+ }
37
+ })
38
+ const selectedName = yield* Schema.decodeUnknown(Schema.Struct({ projectName: Schema.String }))(choice)
39
+ config.config.projectName = selectedName.projectName.trim();
40
+ yield* selectTemplate();
41
+ yield* readLucyJsonFromTemplate;
42
+
43
+ const pkgMgrQuestion = new Enquirer();
44
+ const pkgMgr = yield* Effect.tryPromise({
45
+ try: () => pkgMgrQuestion.prompt({
46
+ type: 'select',
47
+ name: 'packageManager',
48
+ message: 'Select a package manager',
49
+ choices: [...pkgManagers],
50
+ }),
51
+ catch: (e) => {
52
+ return new AppError({ cause: e, message: 'Error selecting package manager' });
53
+ }
54
+ })
55
+ const selectedPkgMgr = yield* Schema.decodeUnknown(Schema.Struct({ packageManager: Schema.Literal(...pkgManagers) }))(pkgMgr)
56
+ config.config.lucySettings.packageManager = selectedPkgMgr.packageManager;
57
+
58
+
59
+ if(config.config.action.initType === 'expo') {
60
+ return yield* init_expo();
61
+ }
62
+ if(config.config.action.initType === 'monorepo') {
63
+ return yield* init_monorepo();
64
+ }
65
+ if(config.config.action.initType === 'cargo') {
66
+ return yield* init_cargo();
67
+ }
68
+ if(config.config.action.initType === 'blocks') {
69
+ return yield* init_blocks();
70
+ }
71
+ if(config.config.action.initType === 'tauri') {
72
+ return yield* init_tauri();
73
+ }
74
+ if(config.config.action.initType === 'velo') {
75
+ return yield* init_velo();
76
+ }
77
+ if(config.config.action.initType === 'submodules') {
78
+ return yield* init_submodules();
79
+ }
80
+ yield* Effect.fail(new AppError({ message: `Unsupported init type: ${config.config.action.initType}`, cause: new Error(`Unsupported init type: ${config.config.action.initType}`) }));
81
+ })
@@ -0,0 +1,72 @@
1
+ import { Effect } from "effect/index"
2
+ import { Config } from "../config.js";
3
+ import { Command, FileSystem, Path } from "@effect/platform"
4
+ import { logger } from "../utils/logger.js";
5
+ import { mergeAdditions, mergeLucySettings2PackageJson, setInitialized, setProjectName, stringReplace } from "../commands/edit.js";
6
+ import { writeLucySettings, writePackageJson } from "../commands/write.js";
7
+ import { copyTemplateFiles } from "../commands/copy.js";
8
+ import { readPackageJson } from "../commands/read.js";
9
+ import { approveBuilds, installPackages, runInstall } from "../commands/install.js";
10
+ import { cleanup } from "../commands/cleanup.js";
11
+ import { gitInit } from "../commands/git.js";
12
+ import { checkForDirty } from "../commands/checks.js";
13
+ import { openVSCode } from "../commands/exec.js";
14
+
15
+ export const init_monorepo = () => {
16
+ return Effect.gen(function*() {
17
+ const config = yield* Config;
18
+ const path = yield* Path.Path;
19
+ const fs = yield* FileSystem.FileSystem;
20
+
21
+ logger.action("Initializing monorepo...");
22
+
23
+ yield* checkForDirty();
24
+
25
+ const createMonoRepo = Command.make(
26
+ "npx",
27
+ "-y",
28
+ "create-nx-workspace",
29
+ config.config.projectName,
30
+ `--appName=${config.config.projectName}`,
31
+ `--pm=${config.config.lucySettings.packageManager}`,
32
+ "--preset=ts",
33
+ "--g=true",
34
+ "--e2eTestRunner=cypress",
35
+ "--formatter=prettier"
36
+ ).pipe(
37
+ Command.stdout("inherit"), // Stream stdout to process.stdout
38
+ Command.stderr("inherit"), // Stream stderr to process.stderr
39
+ Command.exitCode // Get the exit code
40
+ )
41
+
42
+ yield* createMonoRepo;
43
+
44
+ const tempPath = path.join(config.config.cwd, config.config.projectName)
45
+ const projectFiles = yield* fs.readDirectory(tempPath)
46
+ yield* Effect.forEach(
47
+ projectFiles.filter(file => file !== '.git'),
48
+ (file) => fs.copy(path.join(tempPath, file), path.join(config.config.cwd, file), { overwrite: true }),
49
+ { discard: true }
50
+ )
51
+ yield* fs.remove(tempPath, { recursive: true })
52
+
53
+ yield* copyTemplateFiles;
54
+ yield* stringReplace(path.join(config.config.cwd, 'currents.config.ts'), ['__ProjectName__'], [config.config.projectName]);
55
+ yield* readPackageJson;
56
+ yield* setProjectName;
57
+ yield* mergeLucySettings2PackageJson;
58
+ yield* mergeAdditions;
59
+ yield* writeLucySettings;
60
+ yield* writePackageJson;
61
+ yield* gitInit();
62
+ yield* runInstall;
63
+ yield* installPackages(true);
64
+ yield* approveBuilds;
65
+ yield* cleanup;
66
+ yield* setInitialized;
67
+
68
+ logger.success("Monorepo initialized successfully!");
69
+
70
+ yield* openVSCode;
71
+ })
72
+ }
@@ -0,0 +1,19 @@
1
+ import { Effect } from 'effect/index';
2
+ import { logger } from '../utils/logger.js';
3
+ import { checkForVelo } from '../commands/checks.js';
4
+ import { gitInit } from '../commands/git.js';
5
+ import { installVeloPackages, runInstall } from '../commands/install.js';
6
+ import { setInitialized } from '../commands/edit.js';
7
+
8
+ export const prepareVelo = Effect.gen(function*() {
9
+ logger.action("Initializing Tauri project...");
10
+ yield* checkForVelo();
11
+
12
+ yield* gitInit(true);
13
+ yield* installVeloPackages
14
+ yield* runInstall
15
+ yield* setInitialized;
16
+
17
+ logger.success("Velo Prepared initialized successfully!");
18
+
19
+ })
@@ -0,0 +1,42 @@
1
+ import { Effect, Schema } from "effect/index"
2
+ import { logger } from "../utils/logger.js";
3
+ import { writeLucySettings } from "../commands/write.js";
4
+ import { copyTemplateFiles } from "../commands/copy.js";
5
+ import { gitInit } from "../commands/git.js";
6
+ import { checkForDirty } from "../commands/checks.js";
7
+ import { setInitialized } from "../commands/edit.js";
8
+ import { Config } from "../config.js";
9
+ import { Command, FileSystem, Path } from "@effect/platform"
10
+ import { AppError } from "../error.js";
11
+ import { approveBuilds, installPackages } from "../commands/install.js";
12
+ import { openVSCode } from "../commands/exec.js";
13
+
14
+ export const init_tauri = () => {
15
+ return Effect.gen(function*() {
16
+ const config = yield* Config;
17
+ logger.action("Initializing Tauri project...");
18
+
19
+ yield* checkForDirty();
20
+
21
+ const initTauri = Command.make("yarn", "create", "tauri-app", config.config.projectName).pipe(
22
+ Command.stdin("inherit"),
23
+ Command.stdout("inherit"),
24
+ Command.stderr("inherit"),
25
+ Command.runInShell(true),
26
+ Command.exitCode
27
+ )
28
+ if((yield* initTauri) !== 0) {
29
+ yield* Effect.fail(new AppError({ message: "Failed to initialize Tauri project. Please check the error message above.", cause: new Error("Failed to initialize Tauri project") }));
30
+ }
31
+ yield* copyTemplateFiles;
32
+ yield* installPackages();
33
+ yield* approveBuilds;
34
+ yield* writeLucySettings;
35
+ yield* gitInit();
36
+ yield* setInitialized;
37
+
38
+ logger.success("Tauri project initialized successfully!");
39
+
40
+ yield* openVSCode;
41
+ })
42
+ }
@@ -0,0 +1,98 @@
1
+ import { Effect, Schema } from "effect/index";
2
+ import { Config, lucyJsonName, lucyJsonPath } from "../config.js";
3
+ import { orange, red, green, logger } from "../utils/logger.js";
4
+ import { FileSystem } from "@effect/platform"
5
+ import path, { join } from 'path';
6
+ import fsp from 'fs/promises';
7
+ import Enquirer from 'enquirer';
8
+ import { AppError } from "../error.js";
9
+ import { lucySettings } from "../schemas/lucy.js";
10
+ import { JsonSchema } from "../schemas/index.js";
11
+
12
+ export const selectTemplate = () => {
13
+ return Effect.gen(function*() {
14
+ const config = yield* Config
15
+ const fs = yield* FileSystem.FileSystem;
16
+ const templatesPath = join(config.config.lucyHome, 'templates');
17
+ const files = yield* Effect.tryPromise({
18
+ try: () => fsp.readdir(templatesPath, { withFileTypes: true }),
19
+ catch: (e) => {
20
+ console.log((`💩 ${red.underline.bold("=> Templates folder not found at =>")} ${orange(templatesPath)}`));
21
+ return new AppError({ cause: e, message: 'Templates folder not found' });
22
+ }
23
+ })
24
+
25
+ const templateChoices: string[] = [];
26
+ for (const dirent of files) {
27
+ if (dirent.isDirectory()) {
28
+ const lucyRaw = yield* fs.readFileString(join(templatesPath, dirent.name, lucyJsonName));
29
+ const lucySettingsJSON = yield* Schema.decodeUnknown(JsonSchema)(lucyRaw);
30
+ const lucySetting = yield* Schema.decodeUnknown(lucySettings)(lucySettingsJSON)
31
+ if (lucySetting.type === config.config.action.initType) {
32
+ templateChoices.push(dirent.name);
33
+ }
34
+ }
35
+ }
36
+
37
+ if (templateChoices.length === 0) {
38
+ console.log((`💩 ${red.underline.bold("=> No templates found in =>")} ${orange(templatesPath)}`));
39
+ return;
40
+ }
41
+
42
+ const templateQuestion = new Enquirer();
43
+ const choice = yield* Effect.tryPromise({
44
+ try: () => templateQuestion.prompt({
45
+ type: 'select',
46
+ name: 'template',
47
+ message: 'Select a project template',
48
+ choices: templateChoices
49
+ }),
50
+ catch: (e) => {
51
+ return new AppError({ cause: e, message: 'Error selecting template' });
52
+ }
53
+ })
54
+
55
+ const selectedTemplate = yield* Schema.decodeUnknown(Schema.Struct({ template: Schema.String }))(choice)
56
+ const templateDir = join(templatesPath, selectedTemplate.template );
57
+ const templateFilesDir = join(templateDir, 'files');
58
+ config.config.templateDir = templateDir;
59
+ config.config.templateFiles = templateFilesDir;
60
+
61
+ const templateSettingsPath = join(templateDir, lucyJsonName);
62
+
63
+ if (!(yield* fs.exists(templateSettingsPath))) {
64
+ logger.warning((`💩 ${red.underline.bold(`Template is missing ${lucyJsonName} at =>`)} ${orange(templateSettingsPath)}`));
65
+ yield* Effect.fail(new AppError({ message: `Template is missing ${lucyJsonName}`, cause: templateSettingsPath }));
66
+ }
67
+ const lucySettingsRaw = yield* fs.readFileString(templateSettingsPath);
68
+ const newLucySettings = yield* Schema.decodeUnknown(lucySettings)(JSON.parse(lucySettingsRaw));
69
+ if( newLucySettings.type !== config.config.action.initType) return yield* Effect.fail(new AppError({
70
+ message: `Template type ${newLucySettings.type} does not match action type ${config.config.action.initType}`,
71
+ cause: newLucySettings.type
72
+ }));
73
+ if(config.config.lucySettings.initialized) {
74
+ const overwriteQuestion = new Enquirer();
75
+
76
+ const overwrite = yield* Effect.tryPromise({
77
+ try: () => overwriteQuestion.prompt({
78
+ type: 'confirm',
79
+ name: 'overwrite',
80
+ message: `Overwrite existing ${lucyJsonName} settings?`,
81
+ }),
82
+ catch: (e) => {
83
+ return new AppError({
84
+ cause: e,
85
+ message: "Error overwriting settings",
86
+ });
87
+ }
88
+ })
89
+ const choice = yield* Schema.decodeUnknown(Schema.Struct({ overwrite: Schema.Boolean }))(overwrite);
90
+ if (choice.overwrite) {
91
+ config.config.lucySettings = newLucySettings;
92
+ } else {
93
+ logger.info(`Existing ${lucyJsonName} settings will be used.`);
94
+ }
95
+ }
96
+ logger.success(`Selected template: ${green(selectedTemplate.template)}`);
97
+ });
98
+ }