coregen-cli 3.1.6__py3-none-any.whl

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 (172) hide show
  1. coregen.py +1585 -0
  2. coregen_cli-3.1.6.dist-info/METADATA +1211 -0
  3. coregen_cli-3.1.6.dist-info/RECORD +172 -0
  4. coregen_cli-3.1.6.dist-info/WHEEL +5 -0
  5. coregen_cli-3.1.6.dist-info/entry_points.txt +2 -0
  6. coregen_cli-3.1.6.dist-info/top_level.txt +2 -0
  7. generators/__init__.py +1 -0
  8. generators/assets/__init__.py +1 -0
  9. generators/assets/assets.py +30 -0
  10. generators/assets/main.py +4 -0
  11. generators/config/__init__.py +1 -0
  12. generators/config/analisy_options.py +42 -0
  13. generators/config/main.py +11 -0
  14. generators/config/pubspec.py +139 -0
  15. generators/cursor/__init__.py +3 -0
  16. generators/cursor/setup.py +87 -0
  17. generators/helpers/__init__.py +56 -0
  18. generators/helpers/component.py +1030 -0
  19. generators/helpers/config.py +255 -0
  20. generators/helpers/data_source.py +180 -0
  21. generators/helpers/domain.py +469 -0
  22. generators/helpers/feature.py +654 -0
  23. generators/helpers/navigation.py +274 -0
  24. generators/helpers/page.py +63 -0
  25. generators/helpers/project.py +33 -0
  26. generators/helpers/utils.py +338 -0
  27. generators/helpers/validation.py +364 -0
  28. generators/initializator.py +68 -0
  29. generators/main.py +81 -0
  30. generators/static/assets/logo.png +0 -0
  31. generators/static/assets/mock/auth_user.json +5 -0
  32. generators/static/assets/svgs/apple.svg +4 -0
  33. generators/static/assets/svgs/google.svg +2 -0
  34. generators/static/cursor/AGENTS.md.jinja +37 -0
  35. generators/static/cursor/agents/doc-writer.md +20 -0
  36. generators/static/cursor/agents/epic-orchestrator.md +28 -0
  37. generators/static/cursor/agents/feature-implementer.md +29 -0
  38. generators/static/cursor/agents/integration-wiring.md +30 -0
  39. generators/static/cursor/agents/layer-application.md +21 -0
  40. generators/static/cursor/agents/layer-guardian.md +21 -0
  41. generators/static/cursor/agents/layer-infrastructure.md +31 -0
  42. generators/static/cursor/agents/layer-model.md +24 -0
  43. generators/static/cursor/agents/layer-presentation.md +33 -0
  44. generators/static/cursor/docs/architecture/APIS_AND_INTEGRATION.md.jinja +42 -0
  45. generators/static/cursor/docs/architecture/CARAVAGGIO_COMPONENTS.md.jinja +317 -0
  46. generators/static/cursor/docs/architecture/DDD_LAYERS.md.jinja +32 -0
  47. generators/static/cursor/docs/architecture/FILE_TEMPLATES.md.jinja +76 -0
  48. generators/static/cursor/docs/architecture/MOCK_AND_REMOTE_DATA.md.jinja +87 -0
  49. generators/static/cursor/docs/architecture/REFERENCE_IMPLEMENTATIONS.md.jinja +48 -0
  50. generators/static/cursor/docs/architecture/WIDGETS_AND_CARAVAGGIO.md.jinja +76 -0
  51. generators/static/cursor/docs/epics/README.md +17 -0
  52. generators/static/cursor/lib/domain/AGENTS.md +23 -0
  53. generators/static/cursor/lib/features/AGENTS.md +23 -0
  54. generators/static/cursor/lib/widgets/AGENTS.md +21 -0
  55. generators/static/cursor/rules/apis-layer.mdc.jinja +21 -0
  56. generators/static/cursor/rules/application-layer.mdc.jinja +12 -0
  57. generators/static/cursor/rules/architecture-core.mdc.jinja +43 -0
  58. generators/static/cursor/rules/dart-conventions.mdc.jinja +14 -0
  59. generators/static/cursor/rules/domain-layer.mdc.jinja +24 -0
  60. generators/static/cursor/rules/login-context.mdc.jinja +16 -0
  61. generators/static/cursor/rules/presentation-layer.mdc.jinja +15 -0
  62. generators/static/cursor/rules/quality-gate.mdc.jinja +14 -0
  63. generators/static/cursor/rules/ui-caravaggio.mdc.jinja +22 -0
  64. generators/static/cursor/skills/caravaggio-ui/SKILL.md +138 -0
  65. generators/static/cursor/skills/epic-delivery/SKILL.md +74 -0
  66. generators/static/cursor/skills/epic-delivery/templates/epic-status.md +14 -0
  67. generators/static/cursor/skills/epic-delivery/templates/epic.md +36 -0
  68. generators/static/templates/apis/common/constants_template.jinja +48 -0
  69. generators/static/templates/apis/common/data_source_config_template.jinja +47 -0
  70. generators/static/templates/apis/core/api_injectable_module_template.jinja +14 -0
  71. generators/static/templates/apis/interceptors/api_logger_template.jinja +135 -0
  72. generators/static/templates/apis/interceptors/auth_interceptor_template.jinja +207 -0
  73. generators/static/templates/auth/application/auth_bloc_template.jinja +36 -0
  74. generators/static/templates/auth/application/auth_event_template.jinja +7 -0
  75. generators/static/templates/auth/application/auth_state_template.jinja +8 -0
  76. generators/static/templates/auth/infrastructure/auth_facade_module_template.jinja +16 -0
  77. generators/static/templates/auth/infrastructure/auth_facade_template.jinja +288 -0
  78. generators/static/templates/auth/infrastructure/mock_auth_facade_template.jinja +106 -0
  79. generators/static/templates/auth/model/auth_failure_template.jinja +11 -0
  80. generators/static/templates/auth/model/i_auth_facade_template.jinja +24 -0
  81. generators/static/templates/auth/model/user_template.jinja +34 -0
  82. generators/static/templates/auth/model/value_objects_template.jinja +54 -0
  83. generators/static/templates/auth/presentation/login_screen_template.jinja +24 -0
  84. generators/static/templates/auth/sign_in_form/application/sign_in_form_bloc_template.jinja +139 -0
  85. generators/static/templates/auth/sign_in_form/application/sign_in_form_event_template.jinja +15 -0
  86. generators/static/templates/auth/sign_in_form/application/sign_in_form_state_template.jinja +26 -0
  87. generators/static/templates/auth/sign_in_form/presentation/apple_form_template.jinja +16 -0
  88. generators/static/templates/auth/sign_in_form/presentation/email_password_form_template_INACTIVE.jinja +94 -0
  89. generators/static/templates/auth/sign_in_form/presentation/google_form_template.jinja +15 -0
  90. generators/static/templates/auth/sign_in_form/presentation/sign_in_form_template.jinja +381 -0
  91. generators/static/templates/component/component_bloc_template.jinja +49 -0
  92. generators/static/templates/component/component_event_template.jinja +7 -0
  93. generators/static/templates/component/component_form_bloc_template.jinja +56 -0
  94. generators/static/templates/component/component_form_event_template.jinja +7 -0
  95. generators/static/templates/component/component_form_state_template.jinja +18 -0
  96. generators/static/templates/component/component_form_widget_template.jinja +130 -0
  97. generators/static/templates/component/component_list_widget_template.jinja +95 -0
  98. generators/static/templates/component/component_state_template.jinja +9 -0
  99. generators/static/templates/component/component_widget_template.jinja +113 -0
  100. generators/static/templates/core/bloc/base_form_bloc_template.jinja +32 -0
  101. generators/static/templates/core/errors/error_localizer_template.jinja +61 -0
  102. generators/static/templates/core/infrastructure/base_mapper_template.jinja +21 -0
  103. generators/static/templates/core/infrastructure/base_repository_mixin_template.jinja +78 -0
  104. generators/static/templates/core/infrastructure/firebase_injectable_module_template.jinja +11 -0
  105. generators/static/templates/core/infrastructure/firestore_helpers_template.jinja +22 -0
  106. generators/static/templates/core/infrastructure/repository_error_handler_template.jinja +44 -0
  107. generators/static/templates/core/model/common_interfaces_template.jinja +3 -0
  108. generators/static/templates/core/model/entity_template.jinja +5 -0
  109. generators/static/templates/core/model/errors_template.jinja +15 -0
  110. generators/static/templates/core/model/failures_template.jinja +97 -0
  111. generators/static/templates/core/model/value_objects_template.jinja +135 -0
  112. generators/static/templates/core/model/value_validators_template.jinja +105 -0
  113. generators/static/templates/core/presentation/app_drawer_template.jinja +52 -0
  114. generators/static/templates/core/presentation/app_widget_template.jinja +41 -0
  115. generators/static/templates/core/presentation/bottom_nav_bar_template.jinja +32 -0
  116. generators/static/templates/domain/domain_mapper_template.jinja +39 -0
  117. generators/static/templates/domain/domain_remote_service_template.jinja +46 -0
  118. generators/static/templates/domain/domain_repository_template.jinja +90 -0
  119. generators/static/templates/domain/domain_service_module_template.jinja +23 -0
  120. generators/static/templates/domain/enum_template.jinja +3 -0
  121. generators/static/templates/domain/i_domain_service_template.jinja +18 -0
  122. generators/static/templates/domain/mock_domain_service_template.jinja +73 -0
  123. generators/static/templates/feature/feature_bloc_template.jinja +104 -0
  124. generators/static/templates/feature/feature_dto_template.jinja +26 -0
  125. generators/static/templates/feature/feature_entity_template.jinja +23 -0
  126. generators/static/templates/feature/feature_event_template.jinja +20 -0
  127. generators/static/templates/feature/feature_extensions_template.jinja +25 -0
  128. generators/static/templates/feature/feature_failure_template.jinja +11 -0
  129. generators/static/templates/feature/feature_page_template.jinja +113 -0
  130. generators/static/templates/feature/feature_repository_template.jinja +112 -0
  131. generators/static/templates/feature/feature_state_template.jinja +20 -0
  132. generators/static/templates/feature/i_feature_repository_template.jinja +21 -0
  133. generators/static/templates/feature/value_object_field_template.jinja +0 -0
  134. generators/static/templates/feature/value_object_template.jinja +0 -0
  135. generators/static/templates/feature/value_validators_template.jinja +57 -0
  136. generators/static/templates/home/home_screen_template.jinja +68 -0
  137. generators/static/templates/home/presentation/home_screen_template.jinja +52 -0
  138. generators/static/templates/home/screen_template.jinja +12 -0
  139. generators/static/templates/injection_template.jinja +8 -0
  140. generators/static/templates/logging/analytics_logging_template.jinja +42 -0
  141. generators/static/templates/logging/console_template.jinja +50 -0
  142. generators/static/templates/logging/logger_injectable_module_template.jinja +24 -0
  143. generators/static/templates/logging/logger_template.jinja +118 -0
  144. generators/static/templates/main_template.jinja +43 -0
  145. generators/static/templates/page_template.jinja +29 -0
  146. generators/static/templates/router_template.jinja +26 -0
  147. generators/static/templates/splash/presentation/splash_screen_auth_template.jinja +97 -0
  148. generators/static/templates/splash/presentation/splash_screen_template.jinja +51 -0
  149. generators/static/templates/storage/storage_repository_template.jinja +80 -0
  150. generators/static/templates/user_profile/infrastructure/user_profile_dto_template.jinja +27 -0
  151. generators/static/templates/user_profile/infrastructure/user_profile_mapper_template.jinja +43 -0
  152. generators/static/templates/user_profile/infrastructure/user_profile_repository_template.jinja +82 -0
  153. generators/static/templates/user_profile/infrastructure/user_profile_service_template.jinja +27 -0
  154. generators/static/templates/user_profile/model/i_user_profile_repository_template.jinja +34 -0
  155. generators/static/templates/user_profile/model/user_profile_failure_template.jinja +11 -0
  156. generators/static/templates/user_profile/model/user_profile_template.jinja +31 -0
  157. generators/static/templates/widgets/common/custom_scaffold_template.jinja +52 -0
  158. generators/static/templates/widgets/common/error_widget_template.jinja +22 -0
  159. generators/static/templates/widgets/common/loading_widget_template.jinja +14 -0
  160. generators/static/templates/widgets/common/unknown_state_widget_template.jinja +23 -0
  161. generators/templates/__init__.py +1 -0
  162. generators/templates/_core/core_generator.py +121 -0
  163. generators/templates/apis/apis_generator.py +50 -0
  164. generators/templates/auth/auth_generator.py +40 -0
  165. generators/templates/auth/sign_in_form_generator.py +22 -0
  166. generators/templates/copier.py +51 -0
  167. generators/templates/home/home_generator.py +26 -0
  168. generators/templates/lib/lib_generator.py +40 -0
  169. generators/templates/logging/logging_generator.py +28 -0
  170. generators/templates/main.py +75 -0
  171. generators/templates/splash/splash_generator.py +20 -0
  172. generators/templates/storage/storage_generator.py +5 -0
@@ -0,0 +1,172 @@
1
+ coregen.py,sha256=p_FakK7Ehf0GNmlE6wGNHPVTnukVhGx2f6j8Qghoge8,61854
2
+ generators/__init__.py,sha256=maO1L-Otrc54J1IC4bkI_z46sjlkJkQSyE0xsv3wyl8,23
3
+ generators/initializator.py,sha256=JQgaYhFKkEDpIrfNntli8e-EIGSnNffd9XPZ-Xrpruk,2153
4
+ generators/main.py,sha256=j2ppW6YRRgmN9npY2kim7IqUcw76ihR51jSd_enMj8A,3066
5
+ generators/assets/__init__.py,sha256=QA4gxDscwNls5mBIZ5VQFQ44wRgkZpu3Cqtww-cn3rw,29
6
+ generators/assets/assets.py,sha256=2tsRgw1fT_AuCSVzCF-uo8ysviE8jtNS_Q2aujYpGUA,897
7
+ generators/assets/main.py,sha256=MlaVi38R23v8Mclh2ZU79bEt10dP0Oit1F8tMcCUeLU,108
8
+ generators/config/__init__.py,sha256=lczI0iWZM_Qo7epGuXJ01WKm7yikdJ6hQJo3YcuzMVU,39
9
+ generators/config/analisy_options.py,sha256=EwgXiiNu2eTJtlGa6FWQ_j_iUPmBT_SUK1Qw3N2hCPY,1105
10
+ generators/config/main.py,sha256=nI1DaPz7XZBCF4z6xrc2wxqoCIrdumVgw4tDAmRtPPY,316
11
+ generators/config/pubspec.py,sha256=g_YRVZdyi9k-WbYc9itS06Ei9FCUIo6hGKkLxqXpeAo,4195
12
+ generators/cursor/__init__.py,sha256=Wt6Og7EGdWdmTW92C5Eia7hzvWEQmNt6qN5G73cCKxY,78
13
+ generators/cursor/setup.py,sha256=3CC2rsfGXcX69FDfGnIyNS1-_kdJLppRZnU-bYXBpa8,3119
14
+ generators/helpers/__init__.py,sha256=z5PDw8BB3c8Dmv9XoZz0T0zowzCwcOr-OY1V61mf6B8,1665
15
+ generators/helpers/component.py,sha256=6FoN-QmzDxa--9FkCMosl_yqla7yzZ_JaEkxX-MhPP4,42758
16
+ generators/helpers/config.py,sha256=4kg97tweCsowmpOeUWBgS1AIzhl8HFA15uFrqOzP4iI,8789
17
+ generators/helpers/data_source.py,sha256=51ac3p4pXOEtTxOJCPVXFYqhS_Qg3nmVgZ3KtvwIXUE,5430
18
+ generators/helpers/domain.py,sha256=NMRsrBsvMppbyTljxDKiDyeD4_GvXWVPgi4KBKyzQXg,24939
19
+ generators/helpers/feature.py,sha256=3PsGh00S-wI9ojP7Ci75zVfXy3T0CXpY-FcZoIOu67c,26914
20
+ generators/helpers/navigation.py,sha256=AQAVGQMLZ_SGrejmf3YB0PfuBvkeCdAiil2yWpqNtCI,10011
21
+ generators/helpers/page.py,sha256=EQWYZ57kZMnmK43CzSMmlfsZkgo-5yvApUqQjoBQaqw,2348
22
+ generators/helpers/project.py,sha256=HzFVRzhqMqWP3G2cHStT9J8vxZ6ifwdLykk37mOhw1E,1085
23
+ generators/helpers/utils.py,sha256=dC-f2GYzirskfTB3jpSRq-PWcUkal4ELjbKAdj3wEeQ,11310
24
+ generators/helpers/validation.py,sha256=HZXeVEQflLhHs87cweOPNjDeVg-mdoypYfJSIyCp2Do,15032
25
+ generators/static/assets/logo.png,sha256=h_zpAFzEYuDEZQ7CchHG0tk70G-_Bxy3m-pkr8zU9e8,134345
26
+ generators/static/assets/mock/auth_user.json,sha256=QjAc6Lw4DeJqc55XQ8FoSPKr6HOI2XN4-APHGMqaLE8,87
27
+ generators/static/assets/svgs/apple.svg,sha256=lkMN1dJvPVixiEmS-4hfyXAFMTL5TkThk50CRs_JIkQ,809
28
+ generators/static/assets/svgs/google.svg,sha256=bTmcoH4gkdoV2Atl2kp-pLFpFZNL85FR_8GAKv9LL5I,1140
29
+ generators/static/cursor/AGENTS.md.jinja,sha256=orkVss774HgFMNPPTEV1IF88HeQX5lufJSicl9p-XwY,1330
30
+ generators/static/cursor/agents/doc-writer.md,sha256=YsKxOupH7uJERL9qd6L3sSqTSTs4v9RQzvBzIZcUnYg,698
31
+ generators/static/cursor/agents/epic-orchestrator.md,sha256=bGcmL2HARLEYEaXv_IL_ZIS5fHkBZWv7eotqBUfoBNc,1200
32
+ generators/static/cursor/agents/feature-implementer.md,sha256=QSCorjtMboQ4s5PRQSkLxhdlqvd-8VKRz9sRqZu9omw,988
33
+ generators/static/cursor/agents/integration-wiring.md,sha256=TyEOekyIQMLnx0_qo9su_Vt47cTBHMMDhNhHSeBalpE,1216
34
+ generators/static/cursor/agents/layer-application.md,sha256=jEsmEDUQPa2_RkFgonVdQsbJP4Pafb_DnyKcH3CRJhA,633
35
+ generators/static/cursor/agents/layer-guardian.md,sha256=3oGNjVRYxbNWvP0vE-aPjLZy29a6hWYpUlDOBBg3_nQ,827
36
+ generators/static/cursor/agents/layer-infrastructure.md,sha256=3RHIxRotVBXS5Y2YlTJ3CpfBoapN78n-N7MkUClagXQ,1380
37
+ generators/static/cursor/agents/layer-model.md,sha256=QX92oVrzBHETf8fje6drpQLrj7mYL5Qx0wQvaHqedD0,820
38
+ generators/static/cursor/agents/layer-presentation.md,sha256=x3q0s4fDsF5l2ciE19D3fSEOZlnJM7F1k6vz4cSDJJw,1269
39
+ generators/static/cursor/docs/architecture/APIS_AND_INTEGRATION.md.jinja,sha256=QSi80i4RoZb9c11E_j9ku-gJIGJtGcJOqLeSywitoOs,1906
40
+ generators/static/cursor/docs/architecture/CARAVAGGIO_COMPONENTS.md.jinja,sha256=xcWj27j7dPL22yZvsh2uo83EOE07swEqSkoG77bs7vs,6963
41
+ generators/static/cursor/docs/architecture/DDD_LAYERS.md.jinja,sha256=XpV9dRPBvQcuXujAbs6TeHgIA1xFVXqSuvjVkhcCYtg,1229
42
+ generators/static/cursor/docs/architecture/FILE_TEMPLATES.md.jinja,sha256=xvJPZHwirs7tdk3XNhhFn2Z4l_seADKLi6OuStcZTuU,2263
43
+ generators/static/cursor/docs/architecture/MOCK_AND_REMOTE_DATA.md.jinja,sha256=FAa4DXMxAyCVpEhYqmGKg0lPs8NX4JvwOuawmparZyc,3337
44
+ generators/static/cursor/docs/architecture/REFERENCE_IMPLEMENTATIONS.md.jinja,sha256=3OsxLXPCiuip5_ror1jo--Ava3-RP0xMZKhY7hAIyq8,1841
45
+ generators/static/cursor/docs/architecture/WIDGETS_AND_CARAVAGGIO.md.jinja,sha256=OgFc__2JDFhYH9zqBu4aC2eNm9BT2JCDt7pd9BIWw7U,3189
46
+ generators/static/cursor/docs/epics/README.md,sha256=ZeAKAMtSlbcgvMmMS_ZHlu-Ofr-pmuDeCw--O6okq_k,569
47
+ generators/static/cursor/lib/domain/AGENTS.md,sha256=0izK9XeNmapQrjK9qVKrwQUF9yKamf1VMqpNCwHTOIY,699
48
+ generators/static/cursor/lib/features/AGENTS.md,sha256=2buIsVgUXRtUXHxuIX4zeerpl2IGkfqGNteK9ASxPzo,860
49
+ generators/static/cursor/lib/widgets/AGENTS.md,sha256=Plz_TQv-JzYmhqdbc3GKdicbZEDIsQs-W46MTu49Ugs,655
50
+ generators/static/cursor/rules/apis-layer.mdc.jinja,sha256=U5RP-KHYGhRvHryVxYlw7We1bpn87zIr-XpODPMrxDQ,830
51
+ generators/static/cursor/rules/application-layer.mdc.jinja,sha256=lAGze_-YQdfB8WiwqISspKJBUAL5FmwGVSUl0vOtqLY,455
52
+ generators/static/cursor/rules/architecture-core.mdc.jinja,sha256=CKfTPQ6VW3hB1B8Kbwp4GQhFfK9kUKrH1wXY3c9zza8,1762
53
+ generators/static/cursor/rules/dart-conventions.mdc.jinja,sha256=VD9eoQcS9JrxFYek055M5W8juWNc1Y7VhkUmcjjwrUE,649
54
+ generators/static/cursor/rules/domain-layer.mdc.jinja,sha256=V1R2YwH3lW3L1XdCUGTQWhjbT5DvZoj2uszKrDWI6wk,1095
55
+ generators/static/cursor/rules/login-context.mdc.jinja,sha256=WXekKkEdZBFBVt-FTsaBKRRfSbtgEJoiBi39Mgtx6pM,586
56
+ generators/static/cursor/rules/presentation-layer.mdc.jinja,sha256=-MCWkYKCB6178FzWu7Bnc6eoTb2gZeF-gybkmOqOsRU,722
57
+ generators/static/cursor/rules/quality-gate.mdc.jinja,sha256=xxMNuEyZBR2QH3ccK30AS7fTA2-i15qeS4QfaYCjKtM,529
58
+ generators/static/cursor/rules/ui-caravaggio.mdc.jinja,sha256=eMG2PibNtSQ9qxyOFLXCEyMPYnOb5hcZ27ZYFlu44vk,1139
59
+ generators/static/cursor/skills/caravaggio-ui/SKILL.md,sha256=fvUpLl33V_yym2AwTRzX9mvzdDcaV09EJRMT9gD6ns8,3908
60
+ generators/static/cursor/skills/epic-delivery/SKILL.md,sha256=pHvKc3hhIRNXfAeFcAgAuv5OLj6XvgaVMLsTXWySnsY,2359
61
+ generators/static/cursor/skills/epic-delivery/templates/epic-status.md,sha256=CEGdTSh3eS4NX-_V2XnVXtlylsYkBGii5di19FxhdrU,292
62
+ generators/static/cursor/skills/epic-delivery/templates/epic.md,sha256=pGB5psUdNdylHHaGDsYSCkvP7jodHYcM7EKotEoGDI4,713
63
+ generators/static/templates/injection_template.jinja,sha256=eshGXiys5JOKAsSWon0inEZkOgu-6IQd8nLqSSNGkHQ,281
64
+ generators/static/templates/main_template.jinja,sha256=ren-sD65JcCtNTYgD2gbjGOTFHbQQKdUDFtQWtVDOQI,1579
65
+ generators/static/templates/page_template.jinja,sha256=T_Y772qAxXxlvHolSGwWoEWvXLbJKaSQ1-jqSCDmD3Y,894
66
+ generators/static/templates/router_template.jinja,sha256=YwDb88q0hcVV1PU78wnRF94vKaFqWdYDD7QB89uC97Y,827
67
+ generators/static/templates/apis/common/constants_template.jinja,sha256=o6liLoR6NgO0HgLiGAJktUtuXqfkUmIa6kO1z7_pIdc,1859
68
+ generators/static/templates/apis/common/data_source_config_template.jinja,sha256=jo573Ml2xEE0rmUZ_pUkD4-UypR2LGMD4SlvJwbXMP8,1469
69
+ generators/static/templates/apis/core/api_injectable_module_template.jinja,sha256=Jp41JNcmgI6UL3jR0SMtRb1B3GgoI9yeGj2XJEk3mfs,515
70
+ generators/static/templates/apis/interceptors/api_logger_template.jinja,sha256=0fpFfBoOgTgCVg7wjsmNGEaI1UkS4YmjvlefEwnf4FQ,4104
71
+ generators/static/templates/apis/interceptors/auth_interceptor_template.jinja,sha256=q_sEWWbyeCgsOx5eTC1vMwu-4Fh7rmtaXQhRQMbH6m8,6937
72
+ generators/static/templates/auth/application/auth_bloc_template.jinja,sha256=vLwfHLtzj5vXOMSsNf9QCl_WtRMKCo2uIb-Xe_bwlW0,1094
73
+ generators/static/templates/auth/application/auth_event_template.jinja,sha256=DtjI7FY9IT4S9dsJDdF8sI027LDv86Fz-pQ6jonefR4,202
74
+ generators/static/templates/auth/application/auth_state_template.jinja,sha256=-_23xNc1-B5mkouU-3_f-lRysbEsvOqnK_z7gOI6MoU,260
75
+ generators/static/templates/auth/infrastructure/auth_facade_module_template.jinja,sha256=itULN7sz9NP9egyRQk_D4qGfvElvKhR9uJPnR714bog,572
76
+ generators/static/templates/auth/infrastructure/auth_facade_template.jinja,sha256=X7chTCswOc_yaxYbnyyIdAL4Sq1mIYMlHxGpMcFr1EY,11536
77
+ generators/static/templates/auth/infrastructure/mock_auth_facade_template.jinja,sha256=gZFEUrT_EXuSOGSWAOlJu7PACLNgybe1DfFGTIzoIY0,3610
78
+ generators/static/templates/auth/model/auth_failure_template.jinja,sha256=EaJgEKgyKM7G9gNCMO-MumNYwtlrv04mgwF-t4BzWLw,450
79
+ generators/static/templates/auth/model/i_auth_facade_template.jinja,sha256=9OiNOUk-fC-dwu-81yzaJK6omBwRZZI1bMTDrzKLiFg,1034
80
+ generators/static/templates/auth/model/user_template.jinja,sha256=YKOiXeV_crgQeNLDtdxdjmbYntUXo7oU3ctT-VUrC_A,1154
81
+ generators/static/templates/auth/model/value_objects_template.jinja,sha256=mtnRJCwexOIBCfYbOuraHYI1hvu0NsaObWiDqUTLlgI,1305
82
+ generators/static/templates/auth/presentation/login_screen_template.jinja,sha256=k1H5xHhdZ29DKX2FsPeunLT0CimfwtLIf59iyw8R0c8,865
83
+ generators/static/templates/auth/sign_in_form/application/sign_in_form_bloc_template.jinja,sha256=OyF4p7TO5EOH_Q-QE2HqY1cApFv8XBimpBOHZUn0Ioc,5428
84
+ generators/static/templates/auth/sign_in_form/application/sign_in_form_event_template.jinja,sha256=f2S843MEmoCGIvrwxrAVNGncRB5r314gQDe4vy07_iA,1008
85
+ generators/static/templates/auth/sign_in_form/application/sign_in_form_state_template.jinja,sha256=kJmqv09UWBQ_BRyv5FR1cSoghtHqmb2A1J3OmQ9RP5Q,979
86
+ generators/static/templates/auth/sign_in_form/presentation/apple_form_template.jinja,sha256=M8GA7JNnSDe64GBZReUMdZrEFUTntK6sp11dSEuESaA,718
87
+ generators/static/templates/auth/sign_in_form/presentation/email_password_form_template_INACTIVE.jinja,sha256=YPGKPlT3brfe6cPbSYJ-b4jTOsiUQfRFZmXBi1gp_vY,4925
88
+ generators/static/templates/auth/sign_in_form/presentation/google_form_template.jinja,sha256=tfmMfoZn93T8rVSyM7Zef5oDG1vgszm-RipnUdaYrws,671
89
+ generators/static/templates/auth/sign_in_form/presentation/sign_in_form_template.jinja,sha256=QgKlx-YKpu_WkzlmcysJ4HNkZnmhexh6T72Tlf4wYQA,20847
90
+ generators/static/templates/component/component_bloc_template.jinja,sha256=qBfsqMzIjsH7aNVtdCnA5N-Ft0OL-4_-ZgXcufb0ZB4,1967
91
+ generators/static/templates/component/component_event_template.jinja,sha256=MbfMBNYBfgAcMFfWLWfoaR61iM2eOEj_ogKi_imDsUY,325
92
+ generators/static/templates/component/component_form_bloc_template.jinja,sha256=TqoR_tcPJtVxa-hXtzkGqw9SGVufsPytjLKJn533msk,1833
93
+ generators/static/templates/component/component_form_event_template.jinja,sha256=WTjaqtYDQ499TcTTsZ9gwiGLsECfo8Z-ReulsK3SlRo,208
94
+ generators/static/templates/component/component_form_state_template.jinja,sha256=SDubn5K-WiVeth53ZroAflwmuOaknQeqyQt5yYIraDM,572
95
+ generators/static/templates/component/component_form_widget_template.jinja,sha256=2fTLa7ZiTaNanMjjjN_YzcTIWTjUDx5eSYUk9mVRW5w,5479
96
+ generators/static/templates/component/component_list_widget_template.jinja,sha256=zBaNyx0XeX3gCxu9APz0vrePnLxbWAsEbHfUNFtIByg,3769
97
+ generators/static/templates/component/component_state_template.jinja,sha256=yPJ7YSnHMX3qzFoGRo9tFsLD5eCrI0btwUFMA7f3mC8,475
98
+ generators/static/templates/component/component_widget_template.jinja,sha256=fqXoQsh8A_MVXtGv9lVoFlPSpa_y5oY_-e0-ddKaJYM,4126
99
+ generators/static/templates/core/bloc/base_form_bloc_template.jinja,sha256=fjUdZUxeo54FLs61z9LWn7VJa-Zg618729JyThT3hyk,1195
100
+ generators/static/templates/core/errors/error_localizer_template.jinja,sha256=L0p8Vi4-qLomtk8o7YCpDgzMNH8gIDTdtL0rswCI9EQ,2313
101
+ generators/static/templates/core/infrastructure/base_mapper_template.jinja,sha256=q6D0aqeMe2gS19lt0qc3VlxVXo4XY_AS3ZhGoDSuOwI,866
102
+ generators/static/templates/core/infrastructure/base_repository_mixin_template.jinja,sha256=a_hb6B8z1idnoVZrLK3GglJoEqJy4A3E_ZTxkv0xlI4,2891
103
+ generators/static/templates/core/infrastructure/firebase_injectable_module_template.jinja,sha256=2Cp5xWjzGgMD9krrhQvuLKsE4E84v5cnnPThnjyniJc,299
104
+ generators/static/templates/core/infrastructure/firestore_helpers_template.jinja,sha256=CM1ojcIIEkAKuDTSS4mVV-viUOwG2rcEP4BWznewUUA,803
105
+ generators/static/templates/core/infrastructure/repository_error_handler_template.jinja,sha256=9Zth3aOy2M6MVKCkktJ9tS8qdJ0eryMsWnHkB9DqnRo,1416
106
+ generators/static/templates/core/model/common_interfaces_template.jinja,sha256=bZP4Xu_cIrI0G-BWV-csYbLaLeSrtHDuFaQef96cifY,50
107
+ generators/static/templates/core/model/entity_template.jinja,sha256=9TeOqzKWgALYSKF44Obzb5yMbZIgv58iMB4r7JHp1Fg,112
108
+ generators/static/templates/core/model/errors_template.jinja,sha256=fyeJ0jPadqIyBGtMm_xaYtrvOCk0MWxOu-cOPXx7JxU,460
109
+ generators/static/templates/core/model/failures_template.jinja,sha256=rafp0nPZIIh9_R_37zzNRKcDsJgaM0_Jb9rJVpjGcKY,4631
110
+ generators/static/templates/core/model/value_objects_template.jinja,sha256=QJrTAs8WrGC0OPqmGlWtWPxmsoZ-qQOLWMxEiSCVoLM,4351
111
+ generators/static/templates/core/model/value_validators_template.jinja,sha256=LrvLw7qn60v7RBpC0mQ9SAM3HhIuRiR_MpGrKxCmzE4,3608
112
+ generators/static/templates/core/presentation/app_drawer_template.jinja,sha256=r1zZdcDZFb9bN0tX7dUARf0d5u1H5s0MgmmkD8Z7_IQ,1489
113
+ generators/static/templates/core/presentation/app_widget_template.jinja,sha256=V97rA7Tl5AVOQ3ovTMawemihaPp9AX4Q10ZqZRs0gMA,1173
114
+ generators/static/templates/core/presentation/bottom_nav_bar_template.jinja,sha256=GrVzuoVJiVzyhWarCy_jl3h0c9BbbSNxr1nGbY5pm0c,712
115
+ generators/static/templates/domain/domain_mapper_template.jinja,sha256=w7RWS2oFjNT6MDu6TP3liufkNi5ZPMYhrw1KMbZ42qk,1200
116
+ generators/static/templates/domain/domain_remote_service_template.jinja,sha256=OqvOKWyiQ7Ni4U02CLiQc_1X5yRdjMFU82RyhBBflSg,1496
117
+ generators/static/templates/domain/domain_repository_template.jinja,sha256=gp8gTsaoqeZWEhWHrrZNuTKeUquJ8tEPhn-vwYY24Nw,3808
118
+ generators/static/templates/domain/domain_service_module_template.jinja,sha256=0luyQWn2wHwwRBPH3bERpvKq9b788eWhvXfC1tthcCw,826
119
+ generators/static/templates/domain/enum_template.jinja,sha256=uJJTLOUakIn49ASzyLmx0AkvQWLymMr14wAFoKM5_KM,37
120
+ generators/static/templates/domain/i_domain_service_template.jinja,sha256=JaUXX8y0ouX-eb13hSRsf8llYa7QRW4ydIaYpOU25ts,566
121
+ generators/static/templates/domain/mock_domain_service_template.jinja,sha256=HpN6r1mEJ5NWegfPm5FPlJX7Dgmbc6uns_lvuY83a-o,2516
122
+ generators/static/templates/feature/feature_bloc_template.jinja,sha256=yjYiSNHy84O9tijPysLMhz_n_Z73Bo8DLBSXYPCbyIs,4727
123
+ generators/static/templates/feature/feature_dto_template.jinja,sha256=VkakpDf61mQ-_lzuBWEkPMkTxPw3Zovv0_P-2bYcCCc,800
124
+ generators/static/templates/feature/feature_entity_template.jinja,sha256=eMeEwoh2TAOVAfSjTjDotQeTUx5QvRJDHJehC_yPjDc,670
125
+ generators/static/templates/feature/feature_event_template.jinja,sha256=gyHPaVkdxqfBIICCDu52hPt3VDUxZgQBus3Ktg9kqec,916
126
+ generators/static/templates/feature/feature_extensions_template.jinja,sha256=37e3Lhm2FUJtqoV353Djnraf-f0n8PMjjmrgnjRKWoY,946
127
+ generators/static/templates/feature/feature_failure_template.jinja,sha256=BMiiUObW9UGcR4PD3CY2YtC-JjvbihIPRxCCKnHaJvM,485
128
+ generators/static/templates/feature/feature_page_template.jinja,sha256=v6ITUtOmhA1JlVuer0Y7sH5ct6-aa2H-ovq-58j9BoA,4733
129
+ generators/static/templates/feature/feature_repository_template.jinja,sha256=v9Rf4AR2FrKA7lo6uaC-CzatTdnpdtHTebjFr4hocUo,4001
130
+ generators/static/templates/feature/feature_state_template.jinja,sha256=6IpoK-cN3BnGLpJlBEm9QB61GNyo_JFb_s9Ct2ImWI8,873
131
+ generators/static/templates/feature/i_feature_repository_template.jinja,sha256=v7W9HRGDmMVV5gUYyLz-mrEcjbrnM3XHvUAOyxqSFEM,909
132
+ generators/static/templates/feature/value_object_field_template.jinja,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
133
+ generators/static/templates/feature/value_object_template.jinja,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
+ generators/static/templates/feature/value_validators_template.jinja,sha256=rbc2-Nc3AO5BLYtc4pebmiIXFRU5H-iwdgfvx4WhYIA,1894
135
+ generators/static/templates/home/home_screen_template.jinja,sha256=fJzvx-y7TrBQOE5aqCM_nCmernd_opzFxM9bQzb0qyM,1856
136
+ generators/static/templates/home/screen_template.jinja,sha256=TFfhaoE6itEwOZXBzfTgqJSYxdN0vJowBo9QpaBgzP0,273
137
+ generators/static/templates/home/presentation/home_screen_template.jinja,sha256=wln-bope3P36rxEzmPZo1OB2uIv4_zTIzVLyyak8xVo,1581
138
+ generators/static/templates/logging/analytics_logging_template.jinja,sha256=CFL5aXKQFD8W3zP-k6leODKeuR69UTtgaE-X7hlZJak,1202
139
+ generators/static/templates/logging/console_template.jinja,sha256=qpKYQMmzBxibSMh0rVfVw_KCtp8h9MDcJgx9Nims7nc,1546
140
+ generators/static/templates/logging/logger_injectable_module_template.jinja,sha256=wSu4mQ7dDYF_xmKvrXzWh9oZn_TiHPLu5fgDwAu3nJc,766
141
+ generators/static/templates/logging/logger_template.jinja,sha256=2tj4bNEXIMijyWjghTZDaiDPbAL6yngH25P-jGoxUVI,2900
142
+ generators/static/templates/splash/presentation/splash_screen_auth_template.jinja,sha256=Yp1tSnc7j9meFjpl-1F5ApRcXOcr_Mm7gfZz-3j77Gc,2583
143
+ generators/static/templates/splash/presentation/splash_screen_template.jinja,sha256=_vg84dp1i-mzsRJIH74478y0FYoFxpDxBNFIk7v6NpU,1430
144
+ generators/static/templates/storage/storage_repository_template.jinja,sha256=qDlEHPt8-JPZs1klwZI_9jC8wkOOEyDUqxMkX7gZN54,2792
145
+ generators/static/templates/user_profile/infrastructure/user_profile_dto_template.jinja,sha256=9CCZG5Zt6G5P3WNPrKy0FW0ZTrt-vJpc8d8XLfnxVJM,857
146
+ generators/static/templates/user_profile/infrastructure/user_profile_mapper_template.jinja,sha256=JakqtVUgfY_msiWscy9Pwhbv9HHJESeeypktAZMq3ik,1567
147
+ generators/static/templates/user_profile/infrastructure/user_profile_repository_template.jinja,sha256=5hgZRB2PD-VWs3rl2NTnS1Kuyn5na_yGGor5uTL4jBw,2949
148
+ generators/static/templates/user_profile/infrastructure/user_profile_service_template.jinja,sha256=a2Tmyzj34tYhz06USP9_wqplO-gxi8KcDF8PxJrY8kE,844
149
+ generators/static/templates/user_profile/model/i_user_profile_repository_template.jinja,sha256=ge4zkn9nzKWS5fuvqm_SQojauu__hJov7wnwHCIsWXw,1377
150
+ generators/static/templates/user_profile/model/user_profile_failure_template.jinja,sha256=fGmWRIn-ByEwycw80fHZmIIIC2yiEo-fXa668tX2q1w,454
151
+ generators/static/templates/user_profile/model/user_profile_template.jinja,sha256=TNZEZIrUaRFdTBVT1Vp643ihntTux3H0gB-aH1NIy50,1108
152
+ generators/static/templates/widgets/common/custom_scaffold_template.jinja,sha256=Gdl2rGfLvAHCYyZehxjCXOeM18QBSXMxmCCvIGHlhv4,1488
153
+ generators/static/templates/widgets/common/error_widget_template.jinja,sha256=F_MOzP2E6Q6nz7JaWlpn3MESw3VqpOvo-uArC-tA3gw,550
154
+ generators/static/templates/widgets/common/loading_widget_template.jinja,sha256=p5BS5Luun47cy7PjfmeMwNuMYbKVw2APL8XmOs8RsNw,355
155
+ generators/static/templates/widgets/common/unknown_state_widget_template.jinja,sha256=hGuGc1c2LYHOfOpQS-Ic7mWz49MH8uoxfs1UKD8j8bs,591
156
+ generators/templates/__init__.py,sha256=MFkEVYwP56QLZFnHKIiFvQ3XSq-20Sj4b3IBFDNHyXI,32
157
+ generators/templates/copier.py,sha256=Sv2T6Y4pF9MOqW2oeZXT5xds_34xcLwxJp8qp1Hh2pc,1672
158
+ generators/templates/main.py,sha256=RK-GjZvHRT-M_408t5WgzWNb_lLTo0ShQVuMQ4J3LQk,2895
159
+ generators/templates/_core/core_generator.py,sha256=R1u5sjuJ-isGn2gV0ErgGB1knnBtBZ3hTQfFpNaaLLY,6185
160
+ generators/templates/apis/apis_generator.py,sha256=BaFjdMmtS8G-N9j9T9eMXWUn-zShh5WZsT86EnPWBVo,1862
161
+ generators/templates/auth/auth_generator.py,sha256=qnlrQY0zFz6LFWu4irMlod1BFA_p_jlXQuXHuIYu_ro,3384
162
+ generators/templates/auth/sign_in_form_generator.py,sha256=96sBgCbqDty6r-8kjV4nRs1z_soSvlWlm3Kwd0Y1Tmc,1261
163
+ generators/templates/home/home_generator.py,sha256=3dvHPBh4Eltk8oQO_iXHTWXSow3W4xVMMhzDtN35uAU,843
164
+ generators/templates/lib/lib_generator.py,sha256=d-oUna_JdsPIY6Ace0BWwKxsdUtveIFFc7NAy19DULw,1689
165
+ generators/templates/logging/logging_generator.py,sha256=4zNjTj9Uc2Hbuk5-db6gwYDfTZfBmPv4AlmCfv8nRy0,1137
166
+ generators/templates/splash/splash_generator.py,sha256=OMgu6H7xIRPcB6eCnCRlsfQjN0x8UiPyqRUOyHxq4uU,918
167
+ generators/templates/storage/storage_generator.py,sha256=rsqO3TboDV-LuTLXlGv3gunqCYVAVZvj1UjZc4YCu7w,238
168
+ coregen_cli-3.1.6.dist-info/METADATA,sha256=qXkCeQ6NDQnBvLP_2xJoJl8lxwiMqxTBL31ZPLgYqbU,37692
169
+ coregen_cli-3.1.6.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
170
+ coregen_cli-3.1.6.dist-info/entry_points.txt,sha256=Z1o4tlMWryFUCB_q2oYBaaza36AGDHJYDY0g1hpyx-k,40
171
+ coregen_cli-3.1.6.dist-info/top_level.txt,sha256=WB4ZV2g9jVd0zfHubutxIqhvRu-YO-V7sa5MQ_tUkTY,19
172
+ coregen_cli-3.1.6.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ coregen = coregen:cli
@@ -0,0 +1,2 @@
1
+ coregen
2
+ generators
generators/__init__.py ADDED
@@ -0,0 +1 @@
1
+ from .main import init
@@ -0,0 +1 @@
1
+ from .main import copy_assets
@@ -0,0 +1,30 @@
1
+
2
+ # move assets folder with his contents to lib/assets
3
+ import os
4
+ import shutil
5
+ from pathlib import Path
6
+
7
+ BASE_DIR = Path(__file__).parent
8
+ STATIC_DIR = BASE_DIR.parent / "static"
9
+
10
+ def move_assets_to_lib(project_name):
11
+ flutter_name = project_name.lower().replace(" ", "_")
12
+ project_path = Path(flutter_name)
13
+ assets_src = STATIC_DIR / "assets"
14
+ assets_dst = project_path / "assets"
15
+
16
+ if not assets_src.exists():
17
+ print(f"Source assets folder {assets_src} does not exist.")
18
+ return
19
+
20
+ # Create destination directory if it doesn't exist
21
+ assets_dst.mkdir(parents=True, exist_ok=True)
22
+
23
+ # Move all files from assets_src to assets_dst
24
+ for item in assets_src.iterdir():
25
+ dest = assets_dst / item.name
26
+ if item.is_dir():
27
+ shutil.copytree(item, dest, dirs_exist_ok=True)
28
+ else:
29
+ shutil.copy2(item, dest)
30
+
@@ -0,0 +1,4 @@
1
+ from .assets import move_assets_to_lib
2
+
3
+ def copy_assets(project_name):
4
+ move_assets_to_lib(project_name)
@@ -0,0 +1 @@
1
+ from .main import generate_config_files
@@ -0,0 +1,42 @@
1
+ from pathlib import Path
2
+
3
+ def update_analysis_options(flutter_name):
4
+ # Project path
5
+ project_path = Path(flutter_name)
6
+
7
+ """Updates analysis_options.yaml with common configurations"""
8
+ analysis_options_path = project_path / "analysis_options.yaml"
9
+ analysis_options_content = """include: package:flutter_lints/flutter.yaml
10
+
11
+ linter:
12
+ rules:
13
+ - always_use_package_imports
14
+ - avoid_relative_lib_imports
15
+ - prefer_const_constructors
16
+ - prefer_const_declarations
17
+ - always_declare_return_types
18
+ - always_specify_types
19
+
20
+ analyzer:
21
+ errors:
22
+ always_use_package_imports: warning
23
+ avoid_relative_lib_imports: warning
24
+ prefer_const_constructors: error
25
+ unused_import: error
26
+ prefer_const_declarations: error
27
+ unnecessary_null_comparison: error
28
+ always_declare_return_types: error
29
+ always_specify_types: warning
30
+
31
+ exclude:
32
+ - lib/infrastructure/openapi/generated/**
33
+ - lib/**.g.dart
34
+ - lib/**.freezed.dart
35
+
36
+ strong-mode:
37
+ implicit-casts: false
38
+ """
39
+ with open(analysis_options_path, "w") as f:
40
+ f.write(analysis_options_content)
41
+
42
+
@@ -0,0 +1,11 @@
1
+ # import click
2
+
3
+ from .pubspec import update_pubspec
4
+ from .analisy_options import update_analysis_options
5
+
6
+ def generate_config_files(lib_path, has_login, project_name):
7
+ # Create pubspec.yaml
8
+ update_pubspec(project_name, has_login)
9
+
10
+ # Create analysis_options.yaml
11
+ update_analysis_options(project_name)
@@ -0,0 +1,139 @@
1
+ import subprocess
2
+ import sys
3
+ from pathlib import Path
4
+
5
+ def update_pubspec(flutter_name, has_login):
6
+ """Aggiunge dipendenze al pubspec.yaml usando flutter pub add"""
7
+ project_path = Path(flutter_name)
8
+
9
+ # Main dependencies required
10
+ main_dependencies = [
11
+ "dartz",
12
+ "freezed_annotation",
13
+ "flutter_bloc",
14
+ "provider",
15
+ "injectable",
16
+ "get_it",
17
+ "bloc",
18
+ "another_flushbar",
19
+ "flutter_lints",
20
+ "caravaggio_ui",
21
+ "font_awesome_flutter",
22
+ "uuid",
23
+ "collection",
24
+ "rxdart",
25
+ "flutter_svg",
26
+ "shared_preferences",
27
+ "dio",
28
+ "retrofit",
29
+ "go_router",
30
+ "json_annotation",
31
+ "intl",
32
+ ]
33
+
34
+ # Dipendenze di sviluppo
35
+ dev_dependencies = [
36
+ "build_runner",
37
+ "freezed",
38
+ "injectable_generator",
39
+ "json_serializable",
40
+ "retrofit_generator",
41
+ "flutter_launcher_icons",
42
+ "analyzer",
43
+ ]
44
+
45
+ # Add all main dependencies in a single command
46
+ add_multiple_dependencies(project_path, main_dependencies)
47
+ add_multiple_dependencies(project_path, dev_dependencies, dev=True)
48
+
49
+ # Update Flutter configuration in pubspec.yaml
50
+ update_flutter_config(project_path)
51
+
52
+
53
+ def add_multiple_dependencies(project_path: Path, packages: list, dev: bool = False):
54
+ """Adds multiple dependencies using flutter pub add"""
55
+ try:
56
+ cmd = ["flutter", "pub", "add"] + packages
57
+
58
+ if dev:
59
+ cmd.append("--dev")
60
+
61
+ result = subprocess.run(
62
+ cmd,
63
+ cwd=project_path,
64
+ capture_output=True,
65
+ text=True,
66
+ check=True
67
+ )
68
+
69
+ except subprocess.CalledProcessError as e:
70
+ print(f" ⚠️ Error adding dependencies: {e.stderr}")
71
+ except FileNotFoundError:
72
+ print("❌ Flutter not found in PATH")
73
+ sys.exit(1)
74
+ # def add_dependency(project_path: Path, package: str, dev: bool = False):
75
+ # """Adds a single dependency using flutter pub add"""
76
+ # try:
77
+ # cmd = ["flutter", "pub", "add"]
78
+ # cmd.append(package)
79
+
80
+ # if dev:
81
+ # cmd.append("--dev")
82
+
83
+ # result = subprocess.run(
84
+ # cmd,
85
+ # cwd=project_path,
86
+ # capture_output=True,
87
+ # text=True,
88
+ # check=True
89
+ # )
90
+
91
+ # except subprocess.CalledProcessError as e:
92
+ # print(f" ⚠️ Error adding {package}: {e.stderr}")
93
+ # except FileNotFoundError:
94
+ # print("❌ Flutter not found in PATH")
95
+ # sys.exit(1)
96
+
97
+ def update_flutter_config(project_path: Path):
98
+ """Updates the Flutter configuration in pubspec.yaml"""
99
+ pubspec_path = project_path / "pubspec.yaml"
100
+
101
+ if not pubspec_path.exists():
102
+ return
103
+
104
+ try:
105
+ # Read the existing content
106
+ content = pubspec_path.read_text()
107
+
108
+ # Replace only the commented assets
109
+ lines = content.split('\n')
110
+ new_lines = []
111
+
112
+ for line in lines:
113
+ stripped = line.strip()
114
+
115
+ # Replace commented asset lines
116
+ if stripped.startswith("# assets:") or (stripped.startswith("#") and "assets:" in stripped):
117
+ # Find the correct indentation from the line
118
+ indent = line[:len(line) - len(line.lstrip())]
119
+ new_lines.extend([
120
+ f"{indent}assets:",
121
+ f"{indent} - assets/",
122
+ f"{indent} - assets/svgs/",
123
+ f"{indent} - assets/mock/"
124
+ ])
125
+ elif stripped.startswith("uses-material-design:"):
126
+ new_lines.append(line)
127
+ # Add generate: true right after uses-material-design
128
+ indent = line[:len(line) - len(line.lstrip())]
129
+ new_lines.append(f"{indent}generate: true")
130
+ else:
131
+ new_lines.append(line)
132
+
133
+ content = '\n'.join(new_lines)
134
+
135
+ # Write the updated content
136
+ pubspec_path.write_text(content)
137
+
138
+ except Exception as e:
139
+ print(f"⚠️ Error updating Flutter configuration: {e}")
@@ -0,0 +1,3 @@
1
+ from .setup import copy_cursor_ecosystem
2
+
3
+ __all__ = ["copy_cursor_ecosystem"]
@@ -0,0 +1,87 @@
1
+ """Copy and render Cursor ecosystem files into a newly created Flutter project."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import shutil
6
+ from pathlib import Path
7
+
8
+ from jinja2 import Template
9
+
10
+ CURSOR_STATIC_DIR = Path(__file__).resolve().parent.parent / "static" / "cursor"
11
+
12
+ JINJA_KWARGS = {"variable_start_string": "[[", "variable_end_string": "]]"}
13
+
14
+
15
+ def _render_template_text(content: str, context: dict) -> str:
16
+ template = Template(content, **JINJA_KWARGS)
17
+ return template.render(**context)
18
+
19
+
20
+ def _render_file(src: Path, dest: Path, context: dict) -> None:
21
+ dest.parent.mkdir(parents=True, exist_ok=True)
22
+ rendered = _render_template_text(src.read_text(encoding="utf-8"), context)
23
+ dest.write_text(rendered, encoding="utf-8")
24
+
25
+
26
+ def _copy_static_file(src: Path, dest: Path) -> None:
27
+ dest.parent.mkdir(parents=True, exist_ok=True)
28
+ shutil.copy2(src, dest)
29
+
30
+
31
+ def _copy_skill(skill_src: Path, skill_dest: Path, context: dict) -> None:
32
+ """Copy or render a single skill directory into the project."""
33
+ for src in skill_src.rglob("*"):
34
+ if src.is_dir():
35
+ continue
36
+ rel = src.relative_to(skill_src)
37
+ dest = skill_dest / rel
38
+ if src.suffix == ".jinja":
39
+ _render_file(src, dest.with_suffix(""), context)
40
+ else:
41
+ _copy_static_file(src, dest)
42
+
43
+
44
+ def copy_cursor_ecosystem(project_path: Path, login: bool, project_name: str) -> None:
45
+ """Render Cursor rules, agents, skills, docs, and AGENTS.md into the project."""
46
+ if not CURSOR_STATIC_DIR.is_dir():
47
+ raise FileNotFoundError(f"Cursor templates not found: {CURSOR_STATIC_DIR}")
48
+
49
+ context = {
50
+ "project_name": project_name,
51
+ "login": login,
52
+ "has_login": login,
53
+ }
54
+ root = project_path.resolve()
55
+
56
+ rules_src = CURSOR_STATIC_DIR / "rules"
57
+ for src in sorted(rules_src.glob("*.mdc.jinja")):
58
+ if src.name == "login-context.mdc.jinja" and not login:
59
+ continue
60
+ dest_name = src.name.replace(".jinja", "")
61
+ _render_file(src, root / ".cursor" / "rules" / dest_name, context)
62
+
63
+ agents_src = CURSOR_STATIC_DIR / "agents"
64
+ for src in sorted(agents_src.glob("*.md")):
65
+ _copy_static_file(src, root / ".cursor" / "agents" / src.name)
66
+
67
+ skills_src = CURSOR_STATIC_DIR / "skills"
68
+ for skill_dir in sorted(skills_src.iterdir()):
69
+ if not skill_dir.is_dir():
70
+ continue
71
+ _copy_skill(skill_dir, root / ".cursor" / "skills" / skill_dir.name, context)
72
+
73
+ arch_src = CURSOR_STATIC_DIR / "docs" / "architecture"
74
+ for src in sorted(arch_src.glob("*.md.jinja")):
75
+ dest_name = src.name.replace(".jinja", "")
76
+ _render_file(src, root / "docs" / "architecture" / dest_name, context)
77
+
78
+ _render_file(
79
+ CURSOR_STATIC_DIR / "AGENTS.md.jinja",
80
+ root / "AGENTS.md",
81
+ context,
82
+ )
83
+
84
+ for rel in ("lib/domain/AGENTS.md", "lib/features/AGENTS.md", "lib/widgets/AGENTS.md"):
85
+ _copy_static_file(CURSOR_STATIC_DIR / rel, root / rel)
86
+
87
+ _copy_static_file(CURSOR_STATIC_DIR / "docs" / "epics" / "README.md", root / "docs" / "epics" / "README.md")
@@ -0,0 +1,56 @@
1
+ # Helper modules for CoreGen
2
+ from .project import get_project_name, validate_flutter_project
3
+ from .utils import to_pascal_case, to_pascal_case_preserve, map_field_type, pascal_case_to_snake_case, pascal_case_to_kebab_case, pascal_case_to_camel_case
4
+ from .validation import (
5
+ validate_field_name,
6
+ validate_field_type,
7
+ validate_entity_name,
8
+ parse_fields_string,
9
+ parse_field_type,
10
+ )
11
+ from .feature import (
12
+ create_feature_layers,
13
+ create_presentation_feature_layers,
14
+ find_domain_models,
15
+ find_domain_models_with_class_names,
16
+ find_enums,
17
+ find_enums_with_info,
18
+ get_domain_model_class_name,
19
+ generate_value_objects_and_validators,
20
+ generate_consolidated_value_objects,
21
+ generate_value_validators,
22
+ generate_extensions,
23
+ )
24
+ from .domain import create_domain_entity_layers
25
+ from .component import (
26
+ create_component_layers,
27
+ create_component_form_layers,
28
+ create_component_list_layers,
29
+ ensure_base_form_bloc,
30
+ get_model_fields_from_domain,
31
+ get_repository_info,
32
+ generate_component_widget_from_template,
33
+ generate_form_event_from_template,
34
+ generate_form_state_from_template,
35
+ generate_form_bloc_from_template,
36
+ )
37
+ from .navigation import (
38
+ create_drawer_page,
39
+ update_home_page_with_drawer,
40
+ create_drawer_widget,
41
+ update_router_for_drawer_item,
42
+ create_bottom_nav_page,
43
+ update_home_page_with_bottom_nav,
44
+ create_bottom_nav_widget,
45
+ )
46
+ from .page import generate_page_file, update_router
47
+ from .config import (
48
+ CoreGenConfig,
49
+ load_config,
50
+ apply_cli_overrides,
51
+ create_default_config,
52
+ show_config,
53
+ PROJECT_CONFIG_FILE,
54
+ GLOBAL_CONFIG_FILE,
55
+ )
56
+