@launch77/cli 1.2.0 → 1.4.0

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 (215) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/cli.js +8 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/infrastructure/git.d.ts +37 -0
  5. package/dist/infrastructure/git.d.ts.map +1 -0
  6. package/dist/infrastructure/git.js +82 -0
  7. package/dist/infrastructure/git.js.map +1 -0
  8. package/dist/infrastructure/github.d.ts +43 -0
  9. package/dist/infrastructure/github.d.ts.map +1 -0
  10. package/dist/infrastructure/github.js +89 -0
  11. package/dist/infrastructure/github.js.map +1 -0
  12. package/dist/infrastructure/template-generator.d.ts +1 -1
  13. package/dist/infrastructure/template-generator.d.ts.map +1 -1
  14. package/dist/infrastructure/template.d.ts +5 -0
  15. package/dist/infrastructure/template.d.ts.map +1 -1
  16. package/dist/infrastructure/template.js +11 -0
  17. package/dist/infrastructure/template.js.map +1 -1
  18. package/dist/modules/app/commands/create-app.js +1 -1
  19. package/dist/modules/app/commands/create-app.js.map +1 -1
  20. package/dist/modules/app/commands/delete-app.js +1 -1
  21. package/dist/modules/app/commands/delete-app.js.map +1 -1
  22. package/dist/modules/app/services/app-svc.d.ts +1 -1
  23. package/dist/modules/app/services/app-svc.d.ts.map +1 -1
  24. package/dist/modules/app/services/manifest-svc.d.ts +1 -1
  25. package/dist/modules/app/services/manifest-svc.d.ts.map +1 -1
  26. package/dist/modules/catalog/config/catalog-config.test.js +1 -1
  27. package/dist/modules/catalog/config/catalog-config.test.js.map +1 -1
  28. package/dist/modules/catalog/schemas/catalog-ui-components.schema.json +2 -18
  29. package/dist/modules/git/commands/git-connect.d.ts +3 -0
  30. package/dist/modules/git/commands/git-connect.d.ts.map +1 -0
  31. package/dist/modules/git/commands/git-connect.js +156 -0
  32. package/dist/modules/git/commands/git-connect.js.map +1 -0
  33. package/dist/modules/git/errors/git-errors.d.ts +21 -0
  34. package/dist/modules/git/errors/git-errors.d.ts.map +1 -0
  35. package/dist/modules/git/errors/git-errors.js +41 -0
  36. package/dist/modules/git/errors/git-errors.js.map +1 -0
  37. package/dist/modules/git/index.d.ts +5 -0
  38. package/dist/modules/git/index.d.ts.map +1 -0
  39. package/dist/modules/git/index.js +8 -0
  40. package/dist/modules/git/index.js.map +1 -0
  41. package/dist/modules/git/services/git-service.d.ts +24 -0
  42. package/dist/modules/git/services/git-service.d.ts.map +1 -0
  43. package/dist/modules/git/services/git-service.js +56 -0
  44. package/dist/modules/git/services/git-service.js.map +1 -0
  45. package/dist/modules/git/services/github-service.d.ts +27 -0
  46. package/dist/modules/git/services/github-service.d.ts.map +1 -0
  47. package/dist/modules/git/services/github-service.js +45 -0
  48. package/dist/modules/git/services/github-service.js.map +1 -0
  49. package/dist/modules/plugin/commands/plugin-create.d.ts +3 -0
  50. package/dist/modules/plugin/commands/plugin-create.d.ts.map +1 -0
  51. package/dist/modules/plugin/commands/plugin-create.js +59 -0
  52. package/dist/modules/plugin/commands/plugin-create.js.map +1 -0
  53. package/dist/modules/plugin/commands/plugin-install.d.ts.map +1 -1
  54. package/dist/modules/plugin/commands/plugin-install.js +9 -24
  55. package/dist/modules/plugin/commands/plugin-install.js.map +1 -1
  56. package/dist/modules/plugin/errors/plugin-errors.d.ts +24 -1
  57. package/dist/modules/plugin/errors/plugin-errors.d.ts.map +1 -1
  58. package/dist/modules/plugin/errors/plugin-errors.js +79 -6
  59. package/dist/modules/plugin/errors/plugin-errors.js.map +1 -1
  60. package/dist/modules/plugin/index.d.ts +4 -2
  61. package/dist/modules/plugin/index.d.ts.map +1 -1
  62. package/dist/modules/plugin/index.js +4 -2
  63. package/dist/modules/plugin/index.js.map +1 -1
  64. package/dist/modules/plugin/lib/plugin-registry.d.ts +6 -12
  65. package/dist/modules/plugin/lib/plugin-registry.d.ts.map +1 -1
  66. package/dist/modules/plugin/lib/plugin-registry.js +13 -30
  67. package/dist/modules/plugin/lib/plugin-registry.js.map +1 -1
  68. package/dist/modules/plugin/lib/plugin-resolver.d.ts +76 -0
  69. package/dist/modules/plugin/lib/plugin-resolver.d.ts.map +1 -0
  70. package/dist/modules/plugin/lib/plugin-resolver.js +128 -0
  71. package/dist/modules/plugin/lib/plugin-resolver.js.map +1 -0
  72. package/dist/modules/plugin/lib/plugin-resolver.test.d.ts +2 -0
  73. package/dist/modules/plugin/lib/plugin-resolver.test.d.ts.map +1 -0
  74. package/dist/modules/plugin/lib/plugin-resolver.test.js +175 -0
  75. package/dist/modules/plugin/lib/plugin-resolver.test.js.map +1 -0
  76. package/dist/modules/plugin/services/plugin-create-service.d.ts +16 -0
  77. package/dist/modules/plugin/services/plugin-create-service.d.ts.map +1 -0
  78. package/dist/modules/plugin/services/plugin-create-service.js +47 -0
  79. package/dist/modules/plugin/services/plugin-create-service.js.map +1 -0
  80. package/dist/modules/plugin/services/plugin-svc.d.ts +8 -3
  81. package/dist/modules/plugin/services/plugin-svc.d.ts.map +1 -1
  82. package/dist/modules/plugin/services/plugin-svc.js +96 -15
  83. package/dist/modules/plugin/services/plugin-svc.js.map +1 -1
  84. package/dist/modules/release/commands/release-init.d.ts +3 -0
  85. package/dist/modules/release/commands/release-init.d.ts.map +1 -0
  86. package/dist/modules/release/commands/release-init.js +92 -0
  87. package/dist/modules/release/commands/release-init.js.map +1 -0
  88. package/dist/modules/release/errors/release-errors.d.ts +7 -0
  89. package/dist/modules/release/errors/release-errors.d.ts.map +1 -0
  90. package/dist/modules/release/errors/release-errors.js +13 -0
  91. package/dist/modules/release/errors/release-errors.js.map +1 -0
  92. package/dist/modules/release/index.d.ts +4 -0
  93. package/dist/modules/release/index.d.ts.map +1 -0
  94. package/dist/modules/release/index.js +7 -0
  95. package/dist/modules/release/index.js.map +1 -0
  96. package/dist/modules/release/services/release-service.d.ts +34 -0
  97. package/dist/modules/release/services/release-service.d.ts.map +1 -0
  98. package/dist/modules/release/services/release-service.js +154 -0
  99. package/dist/modules/release/services/release-service.js.map +1 -0
  100. package/dist/modules/workspace/commands/init-workspace.d.ts.map +1 -1
  101. package/dist/modules/workspace/commands/init-workspace.js +4 -5
  102. package/dist/modules/workspace/commands/init-workspace.js.map +1 -1
  103. package/dist/modules/workspace/services/workspace-service.d.ts +2 -1
  104. package/dist/modules/workspace/services/workspace-service.d.ts.map +1 -1
  105. package/dist/modules/workspace/services/workspace-service.js +27 -1
  106. package/dist/modules/workspace/services/workspace-service.js.map +1 -1
  107. package/dist/templates/plugin/README.md.hbs +39 -0
  108. package/dist/{plugins/theme/package.json → templates/plugin/package.json.hbs} +5 -3
  109. package/dist/templates/plugin/plugin.json.hbs +7 -0
  110. package/dist/templates/plugin/src/generator.ts.hbs +64 -0
  111. package/dist/templates/plugin/templates/src/.gitkeep +0 -0
  112. package/dist/templates/plugin/tsconfig.json +10 -0
  113. package/dist/{plugins/theme → templates/plugin}/tsup.config.ts +0 -1
  114. package/dist/templates/workspace/.github/workflows/ci.yml +102 -0
  115. package/dist/templates/workspace/package.json +16 -1
  116. package/dist/templates/workspace/turbo.json +5 -0
  117. package/dist/utils/launch77-context.d.ts +1 -1
  118. package/dist/utils/launch77-context.d.ts.map +1 -1
  119. package/dist/utils/launch77-context.js +25 -2
  120. package/dist/utils/launch77-context.js.map +1 -1
  121. package/dist/utils/launch77-validation.d.ts +1 -1
  122. package/dist/utils/launch77-validation.d.ts.map +1 -1
  123. package/dist/utils/string.d.ts +13 -0
  124. package/dist/utils/string.d.ts.map +1 -0
  125. package/dist/utils/string.js +18 -0
  126. package/dist/utils/string.js.map +1 -0
  127. package/package.json +7 -10
  128. package/src/cli.ts +10 -1
  129. package/src/infrastructure/git.ts +86 -0
  130. package/src/infrastructure/github.ts +111 -0
  131. package/src/infrastructure/template-generator.ts +1 -1
  132. package/src/infrastructure/template.ts +14 -0
  133. package/src/modules/app/commands/create-app.ts +1 -1
  134. package/src/modules/app/commands/delete-app.ts +1 -1
  135. package/src/modules/app/services/app-svc.ts +1 -1
  136. package/src/modules/app/services/manifest-svc.ts +1 -1
  137. package/src/modules/catalog/config/catalog-config.test.ts +1 -1
  138. package/src/modules/git/commands/git-connect.ts +183 -0
  139. package/src/modules/git/errors/git-errors.ts +44 -0
  140. package/src/modules/git/index.ts +9 -0
  141. package/src/modules/git/services/git-service.ts +63 -0
  142. package/src/modules/git/services/github-service.ts +52 -0
  143. package/src/modules/plugin/commands/plugin-create.ts +68 -0
  144. package/src/modules/plugin/commands/plugin-install.ts +9 -26
  145. package/src/modules/plugin/errors/plugin-errors.ts +87 -6
  146. package/src/modules/plugin/index.ts +4 -2
  147. package/src/modules/plugin/lib/plugin-registry.ts +14 -37
  148. package/src/modules/plugin/lib/plugin-resolver.test.ts +215 -0
  149. package/src/modules/plugin/lib/plugin-resolver.ts +160 -0
  150. package/src/modules/plugin/services/plugin-create-service.ts +69 -0
  151. package/src/modules/plugin/services/plugin-svc.ts +108 -15
  152. package/src/modules/release/commands/release-init.ts +102 -0
  153. package/src/modules/release/errors/release-errors.ts +13 -0
  154. package/src/modules/release/index.ts +8 -0
  155. package/src/modules/release/services/release-service.ts +170 -0
  156. package/src/modules/workspace/commands/init-workspace.ts +4 -6
  157. package/src/modules/workspace/services/workspace-service.ts +30 -1
  158. package/src/utils/launch77-context.ts +29 -3
  159. package/src/utils/launch77-validation.ts +1 -1
  160. package/src/utils/string.ts +17 -0
  161. package/templates/plugin/README.md.hbs +39 -0
  162. package/templates/plugin/package.json.hbs +34 -0
  163. package/templates/plugin/plugin.json.hbs +7 -0
  164. package/templates/plugin/src/generator.ts.hbs +64 -0
  165. package/templates/plugin/templates/src/.gitkeep +0 -0
  166. package/templates/plugin/tsconfig.json +10 -0
  167. package/templates/plugin/tsup.config.ts +9 -0
  168. package/templates/workspace/.github/workflows/ci.yml +102 -0
  169. package/templates/workspace/package.json +5 -0
  170. package/templates/workspace/turbo.json +5 -0
  171. package/tests/integration/cli.test.ts +25 -0
  172. package/tests/integration/setup.ts +20 -0
  173. package/vitest.config.ts +9 -0
  174. package/vitest.integration.config.ts +9 -0
  175. package/dist/app-templates/webapp/.env.ci +0 -6
  176. package/dist/app-templates/webapp/.env.example +0 -9
  177. package/dist/app-templates/webapp/.eslintrc.json +0 -6
  178. package/dist/app-templates/webapp/README.md.hbs +0 -80
  179. package/dist/app-templates/webapp/app/about/page.tsx.hbs +0 -41
  180. package/dist/app-templates/webapp/app/dashboard/page.tsx.hbs +0 -51
  181. package/dist/app-templates/webapp/app/globals.css +0 -31
  182. package/dist/app-templates/webapp/app/layout.tsx.hbs +0 -26
  183. package/dist/app-templates/webapp/app/page.tsx.hbs +0 -30
  184. package/dist/app-templates/webapp/next.config.js +0 -99
  185. package/dist/app-templates/webapp/package.json.hbs +0 -30
  186. package/dist/app-templates/webapp/postcss.config.js +0 -6
  187. package/dist/app-templates/webapp/tailwind.config.ts +0 -24
  188. package/dist/app-templates/webapp/tsconfig.json +0 -29
  189. package/dist/app-templates/webapp/vercel.json.hbs +0 -7
  190. package/dist/modules/catalog/schemas/schemas/catalog-ui-components.schema.json +0 -145
  191. package/dist/plugins/theme/plugin.json +0 -9
  192. package/dist/plugins/theme/src/generator.ts +0 -92
  193. package/dist/plugins/theme/src/utils/config-modifier.ts +0 -142
  194. package/dist/plugins/theme/src/utils/css-modifier.ts +0 -89
  195. package/dist/plugins/theme/templates/app/theme-test/page.tsx +0 -156
  196. package/dist/plugins/theme/templates/src/modules/theme/README.md +0 -209
  197. package/dist/plugins/theme/templates/src/modules/theme/config/brand.css +0 -23
  198. package/dist/plugins/theme/tsconfig.json +0 -14
  199. package/dist/templates/templates/startup/apps/.gitkeep +0 -8
  200. package/dist/templates/templates/workspace/.launch77/workspace.json +0 -3
  201. package/dist/templates/templates/workspace/README.md +0 -62
  202. package/dist/templates/templates/workspace/app-templates/.gitkeep +0 -1
  203. package/dist/templates/templates/workspace/apps/.gitkeep +0 -1
  204. package/dist/templates/templates/workspace/libraries/.gitkeep +0 -1
  205. package/dist/templates/templates/workspace/package.json +0 -31
  206. package/dist/templates/templates/workspace/plugins/.gitkeep +0 -1
  207. package/dist/templates/templates/workspace/tsconfig.json +0 -22
  208. package/dist/templates/templates/workspace/turbo.json +0 -25
  209. package/launch77-cli-1.2.0.tgz +0 -0
  210. package/src/modules/plugin/lib/launch77-workspace.code-workspace +0 -14
  211. /package/dist/templates/{templates/workspace → workspace}/.eslintignore +0 -0
  212. /package/dist/templates/{templates/workspace → workspace}/.eslintrc.js +0 -0
  213. /package/dist/templates/{templates/workspace → workspace}/.husky/pre-push +0 -0
  214. /package/dist/templates/{templates/workspace → workspace}/.lintstagedrc.json +0 -0
  215. /package/dist/templates/{templates/workspace → workspace}/.prettierrc +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-service.js","sourceRoot":"","sources":["../../../../src/modules/release/services/release-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init-workspace.d.ts","sourceRoot":"","sources":["../../../../src/modules/workspace/commands/init-workspace.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,wBAAgB,oBAAoB,IAAI,OAAO,CAoD9C"}
1
+ {"version":3,"file":"init-workspace.d.ts","sourceRoot":"","sources":["../../../../src/modules/workspace/commands/init-workspace.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC,wBAAgB,oBAAoB,IAAI,OAAO,CAkD9C"}
@@ -31,12 +31,11 @@ export function initWorkspaceCommand() {
31
31
  const service = new WorkspaceService();
32
32
  try {
33
33
  const spinner = ora('Creating workspace structure...').start();
34
- const result = await service.initWorkspace({ name: workspaceName }, process.cwd());
35
- spinner.succeed('Workspace structure created');
36
- // Success message
37
34
  const cwd = process.cwd();
38
- console.log(chalk.green(`\n✅ Workspace created successfully at ${path.relative(cwd, result.workspacePath)}\n`));
39
- console.log(chalk.gray(`Next steps:\n` + ` 1. cd ${workspaceName}\n` + ` 2. npm install\n` + ` 3. Create your first app with launch77 commands\n`));
35
+ const result = await service.initWorkspace({ name: workspaceName }, cwd, spinner);
36
+ // Success message
37
+ console.log(chalk.green(`\n✅ Workspace ready at ${path.relative(cwd, result.workspacePath)}\n`));
38
+ console.log(chalk.gray(`Next steps:\n` + ` 1. cd ${workspaceName}\n` + ` 2. Create your first app with launch77 commands\n`));
40
39
  }
41
40
  catch (error) {
42
41
  if (error instanceof WorkspaceAlreadyExistsError) {
@@ -1 +1 @@
1
- {"version":3,"file":"init-workspace.js","sourceRoot":"","sources":["../../../../src/modules/workspace/commands/init-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AACtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAEnE,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;SACvB,QAAQ,CAAC,QAAQ,EAAE,0DAA0D,CAAC;SAC9E,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,IAAa,EAAE,EAAE;QAC9B,qCAAqC;QACrC,IAAI,aAAa,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,GAAG,MAAM,KAAK,CAAC;gBAC1B,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxC,OAAO,gCAAgC,CAAA;oBACzC,CAAC;oBACD,MAAM,YAAY,GAAG,cAAc,CAAA;oBACnC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC9B,OAAO,kEAAkE,CAAA;oBAC3E,CAAC;oBACD,OAAO,IAAI,CAAA;gBACb,CAAC;aACF,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,aAAa,IAAI,CAAC,CAAC,CAAA;QAE1E,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAA;QAEtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC,iCAAiC,CAAC,CAAC,KAAK,EAAE,CAAA;YAE9D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;YAElF,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAA;YAE9C,kBAAkB;YAClB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yCAAyC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;YAC/G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,WAAW,aAAa,IAAI,GAAG,oBAAoB,GAAG,qDAAqD,CAAC,CAAC,CAAA;QACxJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,2BAA2B,EAAE,CAAC;gBACjD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAA;gBAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YAED,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;gBAC/C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAA;gBAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YAED,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
1
+ {"version":3,"file":"init-workspace.js","sourceRoot":"","sources":["../../../../src/modules/workspace/commands/init-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AACtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAEnE,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;SACvB,QAAQ,CAAC,QAAQ,EAAE,0DAA0D,CAAC;SAC9E,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,IAAa,EAAE,EAAE;QAC9B,qCAAqC;QACrC,IAAI,aAAa,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,aAAa,GAAG,MAAM,KAAK,CAAC;gBAC1B,OAAO,EAAE,iBAAiB;gBAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACxC,OAAO,gCAAgC,CAAA;oBACzC,CAAC;oBACD,MAAM,YAAY,GAAG,cAAc,CAAA;oBACnC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC9B,OAAO,kEAAkE,CAAA;oBAC3E,CAAC;oBACD,OAAO,IAAI,CAAA;gBACb,CAAC;aACF,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,aAAa,IAAI,CAAC,CAAC,CAAA;QAE1E,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAA;QAEtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,GAAG,CAAC,iCAAiC,CAAC,CAAC,KAAK,EAAE,CAAA;YAE9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;YACzB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;YAEjF,kBAAkB;YAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;YAChG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,WAAW,aAAa,IAAI,GAAG,qDAAqD,CAAC,CAAC,CAAA;QACjI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,2BAA2B,EAAE,CAAC;gBACjD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAA;gBAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YAED,IAAI,KAAK,YAAY,yBAAyB,EAAE,CAAC;gBAC/C,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,CAAA;gBAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;YAED,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { InitWorkspaceRequest, InitWorkspaceResult } from '../types/workspace-types.js';
2
+ import type { Ora } from 'ora';
2
3
  export declare class WorkspaceService {
3
- initWorkspace(request: InitWorkspaceRequest, cwd: string): Promise<InitWorkspaceResult>;
4
+ initWorkspace(request: InitWorkspaceRequest, cwd: string, spinner?: Ora): Promise<InitWorkspaceResult>;
4
5
  private getTemplatePath;
5
6
  }
6
7
  //# sourceMappingURL=workspace-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-service.d.ts","sourceRoot":"","sources":["../../../../src/modules/workspace/services/workspace-service.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAE5F,qBAAa,gBAAgB;IACrB,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAoC7F,OAAO,CAAC,eAAe;CAYxB"}
1
+ {"version":3,"file":"workspace-service.d.ts","sourceRoot":"","sources":["../../../../src/modules/workspace/services/workspace-service.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AAC5F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE9B,qBAAa,gBAAgB;IACrB,aAAa,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6D5G,OAAO,CAAC,eAAe;CAYxB"}
@@ -1,10 +1,12 @@
1
1
  import * as path from 'path';
2
2
  import { fileURLToPath } from 'url';
3
+ import { execa } from 'execa';
3
4
  import * as filesystem from '../../../infrastructure/filesystem.js';
5
+ import * as npm from '../../../infrastructure/npm.js';
4
6
  import { WorkspaceAlreadyExistsError } from '../errors/workspace-errors.js';
5
7
  import { validateWorkspaceName } from '../utils/workspace-validators.js';
6
8
  export class WorkspaceService {
7
- async initWorkspace(request, cwd) {
9
+ async initWorkspace(request, cwd, spinner) {
8
10
  const { name } = request;
9
11
  // 1. Validate name
10
12
  validateWorkspaceName(name);
@@ -27,6 +29,30 @@ export class WorkspaceService {
27
29
  if (!(await filesystem.exists(workspaceJsonPath))) {
28
30
  throw new Error('Failed to create workspace manifest (.launch77/workspace.json)');
29
31
  }
32
+ // 7. Stop spinner before npm install
33
+ if (spinner) {
34
+ spinner.succeed('Workspace structure created');
35
+ }
36
+ // 8. Install dependencies
37
+ console.log('\nInstalling dependencies...');
38
+ try {
39
+ await npm.install(workspacePath);
40
+ console.log('✓ Dependencies installed');
41
+ }
42
+ catch (error) {
43
+ console.warn('⚠ Warning: npm install failed:', error instanceof Error ? error.message : String(error));
44
+ console.warn('You may need to run npm install manually in the workspace directory');
45
+ }
46
+ // 9. Initialize changesets
47
+ console.log('\nInitializing changesets...');
48
+ try {
49
+ await execa('npx', ['changeset', 'init'], { cwd: workspacePath });
50
+ console.log('✓ Changesets initialized');
51
+ }
52
+ catch (error) {
53
+ console.warn('⚠ Warning: changeset init failed:', error instanceof Error ? error.message : String(error));
54
+ console.warn('You may need to run npx changeset init manually in the workspace directory');
55
+ }
30
56
  return {
31
57
  workspacePath,
32
58
  name,
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-service.js","sourceRoot":"","sources":["../../../../src/modules/workspace/services/workspace-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,OAAO,KAAK,UAAU,MAAM,uCAAuC,CAAA;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAIxE,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,aAAa,CAAC,OAA6B,EAAE,GAAW;QAC5D,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QAExB,mBAAmB;QACnB,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAE3B,8DAA8D;QAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAE1C,uCAAuC;QACvC,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,2BAA2B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;QAC5D,CAAC;QAED,mBAAmB;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAC3C,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;QAElD,6CAA6C;QAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;QAChE,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAoB,eAAe,CAAC,CAAA;QACjF,WAAW,CAAC,IAAI,GAAG,IAAI,CAAA;QACvB,MAAM,UAAU,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;QAExD,uCAAuC;QACvC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAA;QACjF,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;QACnF,CAAC;QAED,OAAO;YACL,aAAa;YACb,IAAI;SACL,CAAA;IACH,CAAC;IAEO,eAAe;QACrB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QAE1C,0FAA0F;QAC1F,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC1C,MAAM,OAAO,GAAG,KAAK;YACnB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,6CAA6C;YACnF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA,CAAC,8CAA8C;QAEtF,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAA;IAClD,CAAC;CACF"}
1
+ {"version":3,"file":"workspace-service.js","sourceRoot":"","sources":["../../../../src/modules/workspace/services/workspace-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,OAAO,KAAK,UAAU,MAAM,uCAAuC,CAAA;AACnE,OAAO,KAAK,GAAG,MAAM,gCAAgC,CAAA;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAKxE,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,aAAa,CAAC,OAA6B,EAAE,GAAW,EAAE,OAAa;QAC3E,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QAExB,mBAAmB;QACnB,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAE3B,8DAA8D;QAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAE1C,uCAAuC;QACvC,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,2BAA2B,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;QAC5D,CAAC;QAED,mBAAmB;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QAC3C,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAA;QAElD,6CAA6C;QAC7C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAA;QAChE,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAoB,eAAe,CAAC,CAAA;QACjF,WAAW,CAAC,IAAI,GAAG,IAAI,CAAA;QACvB,MAAM,UAAU,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;QAExD,uCAAuC;QACvC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAA;QACjF,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;QACnF,CAAC;QAED,qCAAqC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAA;QAChD,CAAC;QAED,0BAA0B;QAC1B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;QAC3C,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;YAChC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YACtG,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;QACrF,CAAC;QAED,2BAA2B;QAC3B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;QAC3C,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAA;YACjE,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,mCAAmC,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YACzG,OAAO,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAA;QAC5F,CAAC;QAED,OAAO;YACL,aAAa;YACb,IAAI;SACL,CAAA;IACH,CAAC;IAEO,eAAe;QACrB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QAE1C,0FAA0F;QAC1F,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC1C,MAAM,OAAO,GAAG,KAAK;YACnB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,6CAA6C;YACnF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA,CAAC,8CAA8C;QAEtF,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAA;IAClD,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ # {{pluginNamePascal}} Plugin
2
+
3
+ {{description}}
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ launch77 plugin:install {{pluginName}}
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ After installation, the plugin will:
14
+
15
+ - TODO: Describe what the plugin does
16
+ - TODO: List any files created or modified
17
+ - TODO: Explain configuration options
18
+
19
+ ## Development
20
+
21
+ ### Building
22
+
23
+ ```bash
24
+ npm run build
25
+ ```
26
+
27
+ ### Testing
28
+
29
+ ```bash
30
+ npm run typecheck
31
+ ```
32
+
33
+ ## Template Files
34
+
35
+ The `templates/` directory contains files that will be copied to the target application when this plugin is installed. Add any template files your plugin needs here.
36
+
37
+ ## License
38
+
39
+ UNLICENSED
@@ -1,7 +1,9 @@
1
1
  {
2
- "name": "@launch77-shared/plugin-theme",
2
+ "name": "@{{workspaceName}}/plugin-{{pluginName}}",
3
3
  "version": "1.0.0",
4
- "description": "Launch77 theme plugin - Design system with Tailwind preset",
4
+ "description": "{{description}}",
5
+ "license": "UNLICENSED",
6
+ "private": true,
5
7
  "type": "module",
6
8
  "main": "dist/generator.js",
7
9
  "bin": {
@@ -18,7 +20,7 @@
18
20
  "typecheck": "tsc --noEmit"
19
21
  },
20
22
  "dependencies": {
21
- "@launch77/plugin-runtime": "file:../../../launch77-cli/libraries/plugin-runtime/launch77-plugin-runtime-0.1.0.tgz",
23
+ "@launch77/plugin-runtime": "^0.1.0",
22
24
  "chalk": "^5.3.0"
23
25
  },
24
26
  "devDependencies": {
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "{{pluginName}}",
3
+ "version": "1.0.0",
4
+ "description": "{{description}}",
5
+ "pluginDependencies": {},
6
+ "libraryDependencies": {}
7
+ }
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env node
2
+
3
+ import chalk from 'chalk'
4
+ import { StandardGenerator } from '@launch77/plugin-runtime'
5
+ import type { GeneratorContext } from '@launch77/plugin-runtime'
6
+
7
+ export class {{pluginNamePascal}}Generator extends StandardGenerator {
8
+ constructor(context: GeneratorContext) {
9
+ super(context)
10
+ }
11
+
12
+ protected async injectCode(): Promise<void> {
13
+ console.log(chalk.cyan('🔧 Setting up {{pluginName}} plugin...\n'))
14
+
15
+ // TODO: Add your plugin's code injection logic here
16
+ // Examples:
17
+ // - Copy template files to the app
18
+ // - Modify package.json
19
+ // - Update configuration files
20
+
21
+ console.log(chalk.green(' ✓ Plugin setup complete\n'))
22
+ }
23
+
24
+ protected showNextSteps(): void {
25
+ console.log(chalk.white('\n' + '─'.repeat(60) + '\n'))
26
+ console.log(chalk.cyan('📋 {{pluginNamePascal}} Plugin Installed!\n'))
27
+ console.log(chalk.white('Next Steps:\n'))
28
+
29
+ console.log(chalk.gray('1. TODO: Add your first step'))
30
+ console.log(chalk.cyan(' npm run <command>\n'))
31
+
32
+ console.log(chalk.gray('2. TODO: Add your second step'))
33
+ console.log(chalk.cyan(' npm run <command>\n'))
34
+
35
+ console.log(chalk.white('Documentation:\n'))
36
+ console.log(chalk.gray('See README.md for detailed instructions.\n'))
37
+ }
38
+ }
39
+
40
+ // CLI entry point
41
+ async function main() {
42
+ const args = process.argv.slice(2)
43
+ const appPath = args.find((arg) => arg.startsWith('--appPath='))?.split('=')[1]
44
+ const appName = args.find((arg) => arg.startsWith('--appName='))?.split('=')[1]
45
+ const workspaceName = args.find((arg) => arg.startsWith('--workspaceName='))?.split('=')[1]
46
+ const pluginPath = args.find((arg) => arg.startsWith('--pluginPath='))?.split('=')[1]
47
+
48
+ if (!appPath || !appName || !workspaceName || !pluginPath) {
49
+ console.error(chalk.red('Error: Missing required arguments'))
50
+ console.error(chalk.gray('Usage: --appPath=<path> --appName=<name> --workspaceName=<name> --pluginPath=<path>'))
51
+ process.exit(1)
52
+ }
53
+
54
+ const generator = new {{pluginNamePascal}}Generator({ appPath, appName, workspaceName, pluginPath })
55
+ await generator.run()
56
+ }
57
+
58
+ if (import.meta.url === `file://${process.argv[1]}`) {
59
+ main().catch((error) => {
60
+ console.error(chalk.red('\n❌ Error during plugin setup:'))
61
+ console.error(error)
62
+ process.exit(1)
63
+ })
64
+ }
File without changes
@@ -0,0 +1,10 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist",
5
+ "rootDir": "./src",
6
+ "module": "ESNext",
7
+ "target": "ES2022"
8
+ },
9
+ "include": ["src/**/*"]
10
+ }
@@ -4,7 +4,6 @@ export default defineConfig({
4
4
  entry: ['src/generator.ts'],
5
5
  format: ['esm'],
6
6
  dts: false,
7
- sourcemap: false,
8
7
  clean: true,
9
8
  shims: true,
10
9
  })
@@ -0,0 +1,102 @@
1
+ name: CI & Release
2
+
3
+ on:
4
+ pull_request:
5
+ branches: [main, develop]
6
+ push:
7
+ branches: [main, develop]
8
+
9
+ permissions:
10
+ contents: write
11
+ pull-requests: write
12
+ id-token: write
13
+
14
+ concurrency: ${{ github.workflow }}-${{ github.ref }}
15
+
16
+ jobs:
17
+ build-and-test:
18
+ runs-on: ubuntu-latest
19
+
20
+ strategy:
21
+ matrix:
22
+ node-version: [20.x]
23
+
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+
27
+ - name: Setup Node.js ${{ matrix.node-version }}
28
+ uses: actions/setup-node@v4
29
+ with:
30
+ node-version: ${{ matrix.node-version }}
31
+ cache: 'npm'
32
+
33
+ - name: Install dependencies
34
+ run: npm install
35
+
36
+ - name: Run linting
37
+ run: npm run lint
38
+
39
+ - name: Build packages
40
+ run: npm run build
41
+
42
+ - name: Run type checking
43
+ run: npm run typecheck
44
+
45
+ - name: Run tests
46
+ run: npm run test
47
+
48
+ - name: Run integration tests
49
+ run: npm run test:integration
50
+
51
+ quality-checks:
52
+ runs-on: ubuntu-latest
53
+
54
+ steps:
55
+ - uses: actions/checkout@v4
56
+
57
+ - name: Setup Node.js 20.x
58
+ uses: actions/setup-node@v4
59
+ with:
60
+ node-version: 20.x
61
+ cache: 'npm'
62
+
63
+ - name: Install dependencies
64
+ run: npm install
65
+
66
+ - name: Check for dependency vulnerabilities
67
+ run: npm audit --audit-level=high
68
+
69
+ - name: Check formatting
70
+ run: npx prettier --check "**/*.{js,jsx,ts,tsx,json,md}"
71
+
72
+ release:
73
+ name: Release
74
+ runs-on: ubuntu-latest
75
+ needs: [build-and-test, quality-checks]
76
+ if: github.ref == 'refs/heads/main' && github.event_name == 'push'
77
+
78
+ steps:
79
+ - name: Checkout Repo
80
+ uses: actions/checkout@v4
81
+
82
+ - name: Setup Node.js 20.x
83
+ uses: actions/setup-node@v4
84
+ with:
85
+ node-version: 20.x
86
+ cache: 'npm'
87
+
88
+ - name: Upgrade npm
89
+ run: npm i -g npm@latest
90
+
91
+ - name: Install Dependencies
92
+ run: npm install
93
+
94
+ - name: Create Release Pull Request or Publish to npm
95
+ id: changesets
96
+ uses: changesets/action@v1
97
+ with:
98
+ publish: npm run release
99
+ title: "chore: version packages"
100
+ commit: "chore: version packages"
101
+ env:
102
+ GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "workspace-name",
3
3
  "private": true,
4
+ "license": "UNLICENSED",
4
5
  "packageManager": "npm@9.0.0",
5
6
  "workspaces": [
6
7
  "apps/*",
@@ -12,10 +13,24 @@
12
13
  "dev": "turbo run dev",
13
14
  "build": "turbo run build",
14
15
  "test": "turbo run test",
16
+ "test:integration": "turbo run test:integration",
15
17
  "lint": "turbo run lint",
16
- "typecheck": "turbo run typecheck"
18
+ "typecheck": "turbo run typecheck",
19
+ "changeset": "changeset",
20
+ "version-packages": "changeset version",
21
+ "release": "turbo run build lint typecheck test && changeset publish",
22
+ "prepare": "husky"
17
23
  },
18
24
  "devDependencies": {
25
+ "@changesets/cli": "^2.29.8",
26
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
27
+ "@typescript-eslint/parser": "^6.0.0",
28
+ "eslint": "^8.56.0",
29
+ "eslint-config-prettier": "^9.0.0",
30
+ "eslint-plugin-import": "^2.29.0",
31
+ "husky": "^9.0.0",
32
+ "lint-staged": "^15.0.0",
33
+ "prettier": "^3.2.0",
19
34
  "turbo": "^2.0.0"
20
35
  }
21
36
  }
@@ -20,6 +20,11 @@
20
20
  "test": {
21
21
  "outputs": [],
22
22
  "dependsOn": ["build"]
23
+ },
24
+ "test:integration": {
25
+ "outputs": [],
26
+ "dependsOn": ["build"],
27
+ "cache": false
23
28
  }
24
29
  }
25
30
  }
@@ -1,4 +1,4 @@
1
- export type Launch77LocationType = 'workspace-root' | 'workspace-app' | 'unknown';
1
+ export type Launch77LocationType = 'workspace-root' | 'workspace-app' | 'workspace-library' | 'workspace-plugin' | 'workspace-app-template' | 'unknown';
2
2
  export interface Launch77Context {
3
3
  isValid: boolean;
4
4
  locationType: Launch77LocationType;
@@ -1 +1 @@
1
- {"version":3,"file":"launch77-context.d.ts","sourceRoot":"","sources":["../../src/utils/launch77-context.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,eAAe,GAAG,SAAS,CAAA;AAEjF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,oBAAoB,CAAA;IAClC,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AA4ED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAyDjF"}
1
+ {"version":3,"file":"launch77-context.d.ts","sourceRoot":"","sources":["../../src/utils/launch77-context.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,eAAe,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,SAAS,CAAA;AAEvJ,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,oBAAoB,CAAA;IAClC,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;CACpB;AAsGD;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAyDjF"}
@@ -34,6 +34,9 @@ async function findWorkspaceRoot(startDir) {
34
34
  * Parse the directory structure to determine location context
35
35
  * Based on patterns:
36
36
  * - apps/[name] → workspace-app
37
+ * - libraries/[name] → workspace-library
38
+ * - plugins/[name] → workspace-plugin
39
+ * - app-templates/[name] → workspace-app-template
37
40
  * - (empty or root) → workspace-root
38
41
  */
39
42
  function parseLocationFromPath(cwdPath, workspaceRoot) {
@@ -50,8 +53,28 @@ function parseLocationFromPath(cwdPath, workspaceRoot) {
50
53
  appName: parts[1],
51
54
  };
52
55
  }
53
- // Somewhere else in workspace (libraries, plugins, etc.)
54
- // Still considered workspace-root for now
56
+ // libraries/[lib-name]/...
57
+ if (parts[0] === 'libraries' && parts.length >= 2) {
58
+ return {
59
+ locationType: 'workspace-library',
60
+ appName: parts[1],
61
+ };
62
+ }
63
+ // plugins/[plugin-name]/...
64
+ if (parts[0] === 'plugins' && parts.length >= 2) {
65
+ return {
66
+ locationType: 'workspace-plugin',
67
+ appName: parts[1],
68
+ };
69
+ }
70
+ // app-templates/[template-name]/...
71
+ if (parts[0] === 'app-templates' && parts.length >= 2) {
72
+ return {
73
+ locationType: 'workspace-app-template',
74
+ appName: parts[1],
75
+ };
76
+ }
77
+ // Somewhere else in workspace
55
78
  return { locationType: 'workspace-root' };
56
79
  }
57
80
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"launch77-context.js","sourceRoot":"","sources":["../../src/utils/launch77-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAE,MAAM,UAAU,CAAA;AAezB,MAAM,kBAAkB,GAAG,0BAA0B,CAAA;AAMrD;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,GAAW;IACxC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAA;IACvD,OAAO,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAC1C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAAC,aAAqB;IACxD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAA;IACjE,OAAO,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;AACxC,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IAC/C,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAA;IAE3C,OAAO,UAAU,KAAK,OAAO,EAAE,CAAC;QAC9B,IAAI,MAAM,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,OAAO,UAAU,CAAA;QACnB,CAAC;QACD,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACvC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAOD;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,OAAe,EAAE,aAAqB;IACnE,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IAE1D,oBAAoB;IACpB,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,GAAG,EAAE,CAAC;QAC1C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAA;IAC3C,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAE1C,sBAAsB;IACtB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7C,OAAO;YACL,YAAY,EAAE,eAAe;YAC7B,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;SAClB,CAAA;IACH,CAAC;IAED,yDAAyD;IACzD,0CAA0C;IAC1C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAA;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAW;IACrD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAErC,0BAA0B;IAC1B,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAA;IAE1D,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,SAAS;YACvB,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,EAAE;YACX,gBAAgB,EAAE,EAAE;YACpB,aAAa,EAAE,EAAE;YACjB,WAAW,EAAE,EAAE;SAChB,CAAA;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,QAA2B,CAAA;IAC/B,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,qBAAqB,CAAC,aAAa,CAAC,CAAA;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,qDAAqD;QACrD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,SAAS;YACvB,aAAa,EAAE,EAAE;YACjB,OAAO,EAAE,EAAE;YACX,gBAAgB,EAAE,EAAE;YACpB,aAAa,EAAE,EAAE;YACjB,WAAW,EAAE,EAAE;SAChB,CAAA;IACH,CAAC;IAED,sDAAsD;IACtD,MAAM,MAAM,GAAG,qBAAqB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAA;IAEhE,uCAAuC;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IAElD,gDAAgD;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;IAEhD,uDAAuD;IACvD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,aAAa,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAE/E,OAAO;QACL,OAAO,EAAE,IAAI;QACb,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,aAAa;QACb,OAAO;QACP,gBAAgB,EAAE,QAAQ,CAAC,OAAO;QAClC,aAAa;QACb,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW;KACZ,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"launch77-context.js","sourceRoot":"","sources":["../../src/utils/launch77-context.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Launch77Context } from './launch77-context.js';
1
+ import type { Launch77Context } from '@launch77/plugin-runtime';
2
2
  /**
3
3
  * Validation result with helpful error messages
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"launch77-validation.d.ts","sourceRoot":"","sources":["../../src/utils/launch77-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe,GAAG,gBAAgB,CAgBnF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,gBAAgB,CAwB7E"}
1
+ {"version":3,"file":"launch77-validation.d.ts","sourceRoot":"","sources":["../../src/utils/launch77-validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE/D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe,GAAG,gBAAgB,CAgBnF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,gBAAgB,CAwB7E"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Convert a kebab-case or snake_case string to PascalCase
3
+ *
4
+ * @param str - The string to convert (e.g., "my-plugin" or "my_plugin")
5
+ * @returns PascalCase string (e.g., "MyPlugin")
6
+ *
7
+ * @example
8
+ * toPascalCase('my-plugin') // 'MyPlugin'
9
+ * toPascalCase('release') // 'Release'
10
+ * toPascalCase('my-awesome-plugin') // 'MyAwesomePlugin'
11
+ */
12
+ export declare function toPascalCase(str: string): string;
13
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/utils/string.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKhD"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Convert a kebab-case or snake_case string to PascalCase
3
+ *
4
+ * @param str - The string to convert (e.g., "my-plugin" or "my_plugin")
5
+ * @returns PascalCase string (e.g., "MyPlugin")
6
+ *
7
+ * @example
8
+ * toPascalCase('my-plugin') // 'MyPlugin'
9
+ * toPascalCase('release') // 'Release'
10
+ * toPascalCase('my-awesome-plugin') // 'MyAwesomePlugin'
11
+ */
12
+ export function toPascalCase(str) {
13
+ return str
14
+ .split(/[-_]/)
15
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
16
+ .join('');
17
+ }
18
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/utils/string.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG;SACP,KAAK,CAAC,MAAM,CAAC;SACb,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACzE,IAAI,CAAC,EAAE,CAAC,CAAA;AACb,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@launch77/cli",
3
- "version": "1.2.0",
4
- "description": "Launch77 Platform CLI - Refactored",
3
+ "version": "1.4.0",
4
+ "description": "Launch77 Platform CLI",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
7
7
  "bin": {
@@ -15,9 +15,12 @@
15
15
  "dev": "tsx src/cli.ts",
16
16
  "typecheck": "tsc --noEmit",
17
17
  "lint": "eslint src/**/*.ts",
18
- "lint:fix": "eslint src/**/*.ts --fix"
18
+ "lint:fix": "eslint src/**/*.ts --fix",
19
+ "test": "vitest run",
20
+ "test:integration": "vitest run --config vitest.integration.config.ts"
19
21
  },
20
22
  "dependencies": {
23
+ "@launch77/plugin-runtime": "*",
21
24
  "@types/inquirer": "^9.0.9",
22
25
  "chalk": "^5.3.0",
23
26
  "commander": "^11.1.0",
@@ -38,11 +41,5 @@
38
41
  "tsx": "^4.7.0",
39
42
  "typescript": "^5.3.3",
40
43
  "vitest": "^4.0.16"
41
- },
42
- "workspaces": [
43
- "apps/*",
44
- "libraries/*",
45
- "plugins/*",
46
- "app-templates/*"
47
- ]
44
+ }
48
45
  }
package/src/cli.ts CHANGED
@@ -5,7 +5,9 @@ import { Command } from 'commander'
5
5
  import { createAppCommand, deleteAppCommand, generateManifestCommand, validateManifestCommand } from './modules/app/index.js'
6
6
  import { scanCommand, createGenerateCommand } from './modules/catalog/index.js'
7
7
  import { deployInitCommand, deployLogsCommand, deployStatusCommand } from './modules/deploy/index.js'
8
- import { pluginInstallCommand } from './modules/plugin/index.js'
8
+ import { gitConnectCommand } from './modules/git/index.js'
9
+ import { pluginInstallCommand, pluginCreateCommand } from './modules/plugin/index.js'
10
+ import { releaseInitCommand } from './modules/release/index.js'
9
11
  import { createStartupCommand } from './modules/startup/index.js'
10
12
  import { getPackageVersion } from './utils/version.js'
11
13
  import { initWorkspaceCommand } from './modules/workspace/index.js'
@@ -23,9 +25,16 @@ program.addCommand(deleteAppCommand())
23
25
  program.addCommand(generateManifestCommand())
24
26
  program.addCommand(validateManifestCommand())
25
27
  program.addCommand(pluginInstallCommand())
28
+ program.addCommand(pluginCreateCommand())
26
29
  program.addCommand(scanCommand())
27
30
  program.addCommand(createGenerateCommand())
28
31
 
32
+ // Git commands
33
+ program.addCommand(gitConnectCommand())
34
+
35
+ // Release commands
36
+ program.addCommand(releaseInitCommand())
37
+
29
38
  // Deploy commands
30
39
  program.addCommand(deployInitCommand())
31
40
  program.addCommand(deployStatusCommand())