mxrb 0.1.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 (237) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.de-DE.md +108 -0
  4. data/README.md +172 -0
  5. data/README.pt-BR.md +109 -0
  6. data/bin/mxrb +1613 -0
  7. data/docs/README.md +10 -0
  8. data/docs/de-DE/README.md +24 -0
  9. data/docs/de-DE/architectural-patterns.md +26 -0
  10. data/docs/de-DE/architectural-standard.md +48 -0
  11. data/docs/de-DE/architecture.md +76 -0
  12. data/docs/de-DE/compiler.md +162 -0
  13. data/docs/de-DE/conventions.md +19 -0
  14. data/docs/de-DE/design-system.md +52 -0
  15. data/docs/de-DE/entity-dsl.md +53 -0
  16. data/docs/de-DE/native-runtime-quality-report.md +74 -0
  17. data/docs/de-DE/oql-sql.md +211 -0
  18. data/docs/de-DE/platform-api-integration.md +36 -0
  19. data/docs/de-DE/platform-operations.md +243 -0
  20. data/docs/de-DE/project-structure.md +32 -0
  21. data/docs/de-DE/ruby-first-roadmap.md +116 -0
  22. data/docs/de-DE/scaffolds.md +59 -0
  23. data/docs/de-DE/semantic-refactoring.md +56 -0
  24. data/docs/de-DE/team-server.md +33 -0
  25. data/docs/de-DE/validation-matrix.md +64 -0
  26. data/docs/de-DE/vetclinic-acceptance.md +24 -0
  27. data/docs/de-DE/writing.md +138 -0
  28. data/docs/en-US/README.md +24 -0
  29. data/docs/en-US/architectural-patterns.md +151 -0
  30. data/docs/en-US/architectural-standard.md +89 -0
  31. data/docs/en-US/architecture.md +170 -0
  32. data/docs/en-US/compiler.md +157 -0
  33. data/docs/en-US/conventions.md +82 -0
  34. data/docs/en-US/design-system.md +163 -0
  35. data/docs/en-US/entity-dsl.md +53 -0
  36. data/docs/en-US/native-runtime-quality-report.md +73 -0
  37. data/docs/en-US/oql-sql.md +201 -0
  38. data/docs/en-US/platform-api-integration.md +36 -0
  39. data/docs/en-US/platform-operations.md +244 -0
  40. data/docs/en-US/project-structure.md +49 -0
  41. data/docs/en-US/ruby-first-roadmap.md +186 -0
  42. data/docs/en-US/scaffolds.md +57 -0
  43. data/docs/en-US/semantic-refactoring.md +198 -0
  44. data/docs/en-US/team-server.md +32 -0
  45. data/docs/en-US/validation-matrix.md +257 -0
  46. data/docs/en-US/vetclinic-acceptance.md +23 -0
  47. data/docs/en-US/writing.md +655 -0
  48. data/docs/pt-BR/README.md +24 -0
  49. data/docs/pt-BR/architectural-patterns.md +25 -0
  50. data/docs/pt-BR/architectural-standard.md +533 -0
  51. data/docs/pt-BR/architecture.md +300 -0
  52. data/docs/pt-BR/compiler.md +162 -0
  53. data/docs/pt-BR/conventions.md +19 -0
  54. data/docs/pt-BR/design-system.md +65 -0
  55. data/docs/pt-BR/entity-dsl.md +116 -0
  56. data/docs/pt-BR/native-runtime-quality-report.md +73 -0
  57. data/docs/pt-BR/oql-sql.md +208 -0
  58. data/docs/pt-BR/platform-api-integration.md +36 -0
  59. data/docs/pt-BR/platform-operations.md +260 -0
  60. data/docs/pt-BR/project-structure.md +32 -0
  61. data/docs/pt-BR/ruby-first-roadmap.md +239 -0
  62. data/docs/pt-BR/scaffolds.md +104 -0
  63. data/docs/pt-BR/semantic-refactoring.md +55 -0
  64. data/docs/pt-BR/team-server.md +59 -0
  65. data/docs/pt-BR/validation-matrix.md +86 -0
  66. data/docs/pt-BR/vetclinic-acceptance.md +50 -0
  67. data/docs/pt-BR/writing.md +177 -0
  68. data/examples/sudoku_evaluation.rb +14 -0
  69. data/examples/sudoku_functional_test.rb +28 -0
  70. data/lib/mxrb/architecture/graph.rb +124 -0
  71. data/lib/mxrb/architecture/validator.rb +98 -0
  72. data/lib/mxrb/benchmark.rb +33 -0
  73. data/lib/mxrb/compare.rb +390 -0
  74. data/lib/mxrb/compiler/adapter.rb +96 -0
  75. data/lib/mxrb/compiler/artifact_document_compiler.rb +102 -0
  76. data/lib/mxrb/compiler/artifact_materializer.rb +53 -0
  77. data/lib/mxrb/compiler/client_model_materializer.rb +42 -0
  78. data/lib/mxrb/compiler/code_action_document_compiler.rb +64 -0
  79. data/lib/mxrb/compiler/code_action_materializer.rb +35 -0
  80. data/lib/mxrb/compiler/code_action_type_compiler.rb +32 -0
  81. data/lib/mxrb/compiler/combo_box_bundle_compiler.rb +314 -0
  82. data/lib/mxrb/compiler/compatibility_analyzer.rb +169 -0
  83. data/lib/mxrb/compiler/constants_materializer.rb +111 -0
  84. data/lib/mxrb/compiler/data_grid_bundle_compiler.rb +290 -0
  85. data/lib/mxrb/compiler/database_connector_action_compiler.rb +280 -0
  86. data/lib/mxrb/compiler/deployment_asset_copier.rb +60 -0
  87. data/lib/mxrb/compiler/deployment_bootstrapper.rb +208 -0
  88. data/lib/mxrb/compiler/deployment_materializer.rb +43 -0
  89. data/lib/mxrb/compiler/deployment_metadata.rb +64 -0
  90. data/lib/mxrb/compiler/domain_document_compiler.rb +153 -0
  91. data/lib/mxrb/compiler/domain_model_materializer.rb +35 -0
  92. data/lib/mxrb/compiler/domain_security_compiler.rb +82 -0
  93. data/lib/mxrb/compiler/gallery_bundle_compiler.rb +190 -0
  94. data/lib/mxrb/compiler/generic_widget_bundle_compiler.rb +281 -0
  95. data/lib/mxrb/compiler/image_bundle_compiler.rb +216 -0
  96. data/lib/mxrb/compiler/java_proxy_generator.rb +509 -0
  97. data/lib/mxrb/compiler/legacy_data_grid_compiler.rb +267 -0
  98. data/lib/mxrb/compiler/legacy_page_builder.rb +287 -0
  99. data/lib/mxrb/compiler/mda.rb +99 -0
  100. data/lib/mxrb/compiler/microflow_document_compiler.rb +85 -0
  101. data/lib/mxrb/compiler/microflow_materializer.rb +48 -0
  102. data/lib/mxrb/compiler/microflow_node_compiler.rb +250 -0
  103. data/lib/mxrb/compiler/model_package.rb +116 -0
  104. data/lib/mxrb/compiler/model_values.rb +67 -0
  105. data/lib/mxrb/compiler/nanoflow_program_compiler.rb +483 -0
  106. data/lib/mxrb/compiler/navigation_document_compiler.rb +93 -0
  107. data/lib/mxrb/compiler/packager.rb +100 -0
  108. data/lib/mxrb/compiler/page_bundle_builder.rb +56 -0
  109. data/lib/mxrb/compiler/page_bundle_compiler.rb +2004 -0
  110. data/lib/mxrb/compiler/page_document_compiler.rb +77 -0
  111. data/lib/mxrb/compiler/portable_packager.rb +356 -0
  112. data/lib/mxrb/compiler/project_jar_archive.rb +84 -0
  113. data/lib/mxrb/compiler/project_jar_builder.rb +121 -0
  114. data/lib/mxrb/compiler/project_materializer.rb +139 -0
  115. data/lib/mxrb/compiler/project_model_orderer.rb +52 -0
  116. data/lib/mxrb/compiler/runtime_data_types.rb +31 -0
  117. data/lib/mxrb/compiler/runtime_model_schema.rb +90 -0
  118. data/lib/mxrb/compiler/schemas/runtime-10.24.0.73019.json +1052 -0
  119. data/lib/mxrb/compiler/schemas/runtime-11.json +1215 -0
  120. data/lib/mxrb/compiler/schemas/runtime-6.10.8.json +1148 -0
  121. data/lib/mxrb/compiler/schemas/runtime-7.17.0.json +1144 -0
  122. data/lib/mxrb/compiler/schemas/runtime-7.5.0.json +1215 -0
  123. data/lib/mxrb/compiler/schemas/runtime-9.6.1.29396.json +868 -0
  124. data/lib/mxrb/compiler/schemas/system-model-10.24.0.73019.b64 +1135 -0
  125. data/lib/mxrb/compiler/schemas/system-model-11.12.1.b64 +815 -0
  126. data/lib/mxrb/compiler/schemas/system-model-6.10.8.b64 +497 -0
  127. data/lib/mxrb/compiler/schemas/system-model-7.17.0.b64 +519 -0
  128. data/lib/mxrb/compiler/schemas/system-model-7.5.0.b64 +504 -0
  129. data/lib/mxrb/compiler/schemas/system-model-9.6.1.29396.b64 +816 -0
  130. data/lib/mxrb/compiler/security_materializer.rb +104 -0
  131. data/lib/mxrb/compiler/settings_document_compiler.rb +45 -0
  132. data/lib/mxrb/compiler/settings_materializer.rb +25 -0
  133. data/lib/mxrb/compiler/source_model.rb +128 -0
  134. data/lib/mxrb/compiler/system_model_seed.rb +88 -0
  135. data/lib/mxrb/compiler/system_queue_materializer.rb +54 -0
  136. data/lib/mxrb/compiler/system_text_materializer.rb +49 -0
  137. data/lib/mxrb/compiler/translation_materializer.rb +95 -0
  138. data/lib/mxrb/compiler/web_bundle_builder.rb +155 -0
  139. data/lib/mxrb/compiler/web_list_data_source.rb +139 -0
  140. data/lib/mxrb/compiler/web_operation_compiler.rb +614 -0
  141. data/lib/mxrb/compiler/web_shell_materializer.rb +194 -0
  142. data/lib/mxrb/compiler/widget_package_extractor.rb +63 -0
  143. data/lib/mxrb/doctor.rb +116 -0
  144. data/lib/mxrb/dsl/builder.rb +1636 -0
  145. data/lib/mxrb/errors.rb +18 -0
  146. data/lib/mxrb/evaluation.rb +131 -0
  147. data/lib/mxrb/exporter.rb +1716 -0
  148. data/lib/mxrb/frontend/migrator.rb +775 -0
  149. data/lib/mxrb/functional.rb +307 -0
  150. data/lib/mxrb/github/annotator.rb +161 -0
  151. data/lib/mxrb/initializer.rb +257 -0
  152. data/lib/mxrb/integrity/validator.rb +136 -0
  153. data/lib/mxrb/io/bson_codec.rb +145 -0
  154. data/lib/mxrb/io/mpr_file.rb +558 -0
  155. data/lib/mxrb/io/mxunit_codec.rb +42 -0
  156. data/lib/mxrb/marketplace.rb +380 -0
  157. data/lib/mxrb/model/association.rb +98 -0
  158. data/lib/mxrb/model/attribute.rb +100 -0
  159. data/lib/mxrb/model/connector.rb +17 -0
  160. data/lib/mxrb/model/design_materializer.rb +133 -0
  161. data/lib/mxrb/model/design_migration.rb +126 -0
  162. data/lib/mxrb/model/design_system.rb +111 -0
  163. data/lib/mxrb/model/domain_model.rb +51 -0
  164. data/lib/mxrb/model/entity.rb +180 -0
  165. data/lib/mxrb/model/menu.rb +38 -0
  166. data/lib/mxrb/model/microflow.rb +100 -0
  167. data/lib/mxrb/model/module.rb +142 -0
  168. data/lib/mxrb/model/navigation.rb +127 -0
  169. data/lib/mxrb/model/page.rb +410 -0
  170. data/lib/mxrb/model/project.rb +187 -0
  171. data/lib/mxrb/model/unit.rb +48 -0
  172. data/lib/mxrb/module_initializer.rb +75 -0
  173. data/lib/mxrb/official_marketplace/content_api.rb +292 -0
  174. data/lib/mxrb/official_marketplace/dependency_resolver.rb +329 -0
  175. data/lib/mxrb/official_marketplace/lifecycle.rb +367 -0
  176. data/lib/mxrb/official_marketplace/module_package_importer.rb +318 -0
  177. data/lib/mxrb/official_marketplace/widget_package_installer.rb +414 -0
  178. data/lib/mxrb/official_marketplace.rb +720 -0
  179. data/lib/mxrb/oql/analyzer.rb +155 -0
  180. data/lib/mxrb/oql/index_advisor.rb +85 -0
  181. data/lib/mxrb/oql/plan_analyzer.rb +185 -0
  182. data/lib/mxrb/oql/server.rb +132 -0
  183. data/lib/mxrb/oql/sql_server_plan_analyzer.rb +190 -0
  184. data/lib/mxrb/oql/sql_server_workload_analyzer.rb +80 -0
  185. data/lib/mxrb/oql/workload_analyzer.rb +175 -0
  186. data/lib/mxrb/oql/workload_baseline.rb +60 -0
  187. data/lib/mxrb/oql.rb +424 -0
  188. data/lib/mxrb/project_lifecycle.rb +76 -0
  189. data/lib/mxrb/protocols/plan.rb +86 -0
  190. data/lib/mxrb/protocols.rb +123 -0
  191. data/lib/mxrb/runtime/database_workspace.rb +677 -0
  192. data/lib/mxrb/runtime/docker_executor.rb +41 -0
  193. data/lib/mxrb/runtime/docker_workspace.rb +29 -0
  194. data/lib/mxrb/runtime/executor.rb +169 -0
  195. data/lib/mxrb/runtime/java_locator.rb +26 -0
  196. data/lib/mxrb/runtime/native.rb +474 -0
  197. data/lib/mxrb/runtime/sql_server_database.rb +146 -0
  198. data/lib/mxrb/runtime/toolchain.rb +82 -0
  199. data/lib/mxrb/scaffold/cli.rb +113 -0
  200. data/lib/mxrb/scaffold/generator.rb +246 -0
  201. data/lib/mxrb/scaffold/help.rb +80 -0
  202. data/lib/mxrb/scaffold/page_templates.rb +54 -0
  203. data/lib/mxrb/scaffold/recipes.rb +198 -0
  204. data/lib/mxrb/scaffold/registry.rb +82 -0
  205. data/lib/mxrb/scaffold/templates.rb +723 -0
  206. data/lib/mxrb/scaffold/transaction.rb +84 -0
  207. data/lib/mxrb/schema/tables.rb +55 -0
  208. data/lib/mxrb/semantic/analyzer.rb +473 -0
  209. data/lib/mxrb/semantic/batch_plan.rb +68 -0
  210. data/lib/mxrb/semantic/domain_mutator.rb +419 -0
  211. data/lib/mxrb/semantic/embedder.rb +51 -0
  212. data/lib/mxrb/semantic/extractor.rb +290 -0
  213. data/lib/mxrb/semantic/index.rb +623 -0
  214. data/lib/mxrb/semantic/inliner.rb +216 -0
  215. data/lib/mxrb/semantic/mover.rb +153 -0
  216. data/lib/mxrb/semantic/onnx_embedder.rb +34 -0
  217. data/lib/mxrb/semantic/remover.rb +70 -0
  218. data/lib/mxrb/semantic/renamer.rb +211 -0
  219. data/lib/mxrb/semantic/tfidf_embedder.rb +46 -0
  220. data/lib/mxrb/semantic/vec_store.rb +75 -0
  221. data/lib/mxrb/team_server.rb +390 -0
  222. data/lib/mxrb/templates/project/10.24.0.73019.json +32 -0
  223. data/lib/mxrb/templates/project/11.12.1.json +32 -0
  224. data/lib/mxrb/templates/project/6.10.8.json +50 -0
  225. data/lib/mxrb/templates/project/7.17.0.json +50 -0
  226. data/lib/mxrb/templates/project/7.5.0.json +50 -0
  227. data/lib/mxrb/templates/project/9.6.1.29396.json +50 -0
  228. data/lib/mxrb/version.rb +5 -0
  229. data/lib/mxrb/widget_package.rb +338 -0
  230. data/lib/mxrb/widget_synchronizer.rb +31 -0
  231. data/lib/mxrb/writer.rb +3775 -0
  232. data/lib/mxrb.rb +188 -0
  233. data/marketplace/catalog.json +10 -0
  234. data/marketplace/modules/shared-kernel/domain/README.md +4 -0
  235. data/marketplace/modules/shared-kernel/module.rb +5 -0
  236. data/marketplace/modules/shared-kernel/mxrb-module.json +9 -0
  237. metadata +447 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 132cfec5b4d87e5d5efc2e9257d588952e7b8653b5fde7042dabadcd95da7ed0
4
+ data.tar.gz: d0e5191a8ad4f7f11a870ee7bd66d39b797a48326727d32e559827007724f462
5
+ SHA512:
6
+ metadata.gz: 309fd50dab116e2bd6c97ec070322e350147e9a360f93b22ed9c215309bc832a3241edc9dd1942af8b225da5b0e216fd3829a88be464d22f112506833dcd10b4
7
+ data.tar.gz: 8e99f2ebfaaef5b11956ad4c3698d7a03153a98c62c8bfb23915bc964a2128a7531ba8f54b2e92306aa3e59c742871f533da8e48b83db20c0220b95a2b5a0b0c
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Lucas Moura
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.de-DE.md ADDED
@@ -0,0 +1,108 @@
1
+ # MXRB
2
+
3
+ [English](README.md) · [Português](README.pt-BR.md) · **Deutsch**
4
+
5
+ MXRB ist ein Ruby-First-Werkzeug zum Lesen, Schreiben, Exportieren, Validieren
6
+ und Testen von Mendix-Projekten (`.mpr`) ohne MDL oder `mxcli`.
7
+
8
+ ## Funktionen
9
+
10
+ - tiefes Lesen und Schreiben von MPR v1/v2;
11
+ - Export in bearbeitbare Ruby-Projekte;
12
+ - idempotente Generierung mit Ruby-DSL;
13
+ - Scaffold für neue Projekte mit PascalCase-Hauptmodul;
14
+ - tiefe Ruby-Bearbeitung jeder nativen Unit mit verlustfreier Baseline;
15
+ - Vergleich, semantischer Diff, Referenzen und Impact-Analyse;
16
+ - sichere Umbenennung mit Vorschau;
17
+ - Verschieben eigenständiger Units zwischen Ordnern desselben Moduls;
18
+ - Entfernen eigenständiger Units nach Referenz- und Kind-Unit-Prüfung;
19
+ - Lint und ausführbare Modellbewertungen;
20
+ - Erkennung von nativem OQL und logische SQL-Ansicht nur bei vorhandenem OQL;
21
+ - isolierte, durch das Runtime synchronisierte PostgreSQL für direkte SQL-Abfragen;
22
+ - Analyse von PostgreSQL-/SQL-Server-Plänen und kumulativem PostgreSQL-Workload;
23
+ - funktionale Microflow-Tests lokal oder in Docker.
24
+ - Suche und Installation wiederverwendbarer Ruby-Module mit SHA-256-Lock.
25
+
26
+ Die Matrix bewahrt Mendix-5.21–11.12-Projekte strukturell. Eine exakte native
27
+ Mendix-5-Prüfung erfordert weiterhin Windows/Studio Pro und ist eine
28
+ ausdrückliche MXRB-Einschränkung; sie gehört nicht zum direkten automatischen
29
+ Toolchain-Gate.
30
+
31
+ ## Voraussetzungen
32
+
33
+ Ruby 4.0+, SQLite3 und für offizielle Gates das exakte Mendix-Toolchain. Lokal
34
+ wird kompatibles Java benötigt; Docker stellt JDK und Runtime bereit.
35
+
36
+ ```sh
37
+ bundle install
38
+ bundle exec mxrb validate App.mpr
39
+ bundle exec mxrb export App.mpr app-ruby
40
+ bundle exec mxrb compare original.mpr rebuilt.mpr
41
+ bundle exec mxrb module search
42
+ bundle exec mxrb module add shared-kernel
43
+ bundle exec mxrb cache status App.mpr
44
+ bundle exec mxrb cache warm App.mpr
45
+ bundle exec mxrb cache clear App.mpr
46
+ bundle exec mxrb oql App.mpr --dialect postgresql
47
+ bundle exec mxrb db up App.mpr
48
+ bundle exec mxrb db sql App.mpr 'SELECT * FROM "sales$order" LIMIT 20'
49
+ ```
50
+
51
+ Die MPR speichert das Modell, nicht die Anwendungsdaten. `db up` baut das
52
+ exakte portable Runtime und lässt es ein isoliertes PostgreSQL-Volume
53
+ synchronisieren. Der Zugriff ist auf Loopback beschränkt und verwendet ohne
54
+ ausdrückliches `--write` eine schreibgeschützte Rolle. Siehe
55
+ [OQL und lokaler SQL-Zugriff](docs/de-DE/oql-sql.md).
56
+
57
+ ## Ruby-DSL
58
+
59
+ ```ruby
60
+ Mxrb.define("Shop.mpr") do
61
+ mendix_version "11.12.1"
62
+ self.module :Sales do
63
+ entity :Order do
64
+ string :Number, documentation: "Stabile Bestellnummer"
65
+ decimal :Total, default: 0
66
+ end
67
+ end
68
+ end
69
+ ```
70
+
71
+ ## Bewertungen und Funktionstests
72
+
73
+ ```ruby
74
+ artifact "Sales.Order", kind: :entity
75
+ no_call_cycles
76
+ no_missing_internal_references
77
+ ```
78
+
79
+ ```ruby
80
+ microflow "erstellt Bestellung", call: "Sales.ACT_CreateOrder"
81
+ ```
82
+
83
+ ```sh
84
+ bundle exec mxrb evaluate Shop.mpr evaluation.rb
85
+ bundle exec mxrb test Shop.mpr functional_test.rb --docker
86
+ ```
87
+
88
+ JUnit und MDL sind nicht erforderlich. Instrumentierung, Paket, Datenbank und
89
+ Uploads existieren nur in der wegwerfbaren Kopie; das Original bleibt unverändert.
90
+ Assertions prüfen Rückgabewerte und persistierten Zustand über
91
+ Entitäts-/XPath-Zählungen.
92
+
93
+ ## Entwicklung
94
+
95
+ ```sh
96
+ bundle exec rspec
97
+ MXRB_COVERAGE=1 bundle exec rspec
98
+ bundle exec ruby script/branch_report.rb
99
+ bundle exec rubocop
100
+ ```
101
+
102
+ Die Suite erzwingt 100 % Zeilen- und Branch-Abdeckung.
103
+
104
+ Siehe die [vollständige deutsche Dokumentation](docs/de-DE/README.md).
105
+
106
+ ## Lizenz
107
+
108
+ MIT.
data/README.md ADDED
@@ -0,0 +1,172 @@
1
+ # MXRB
2
+
3
+ **English** · [Português](README.pt-BR.md) · [Deutsch](README.de-DE.md)
4
+
5
+ MXRB is a Ruby-first toolkit for reading, writing, exporting, validating and
6
+ testing Mendix project models (`.mpr`) without using MDL or `mxcli`.
7
+
8
+ Ruby is the public interface. The official Mendix `mx`, `mxbuild` and Runtime
9
+ remain optional external gates for compatibility and functional execution.
10
+
11
+ ## Current capabilities
12
+
13
+ - read and write MPR v1 and v2 projects;
14
+ - export complete projects into editable Ruby;
15
+ - generate idempotent MPRs from a Ruby DSL;
16
+ - scaffold a new Ruby-first project with its PascalCase application module;
17
+ - expose every native unit as editable deep Ruby while retaining a lossless baseline;
18
+ - compare structural snapshots and produce typed semantic diffs;
19
+ - inspect references, callers, callees and transitive impact;
20
+ - rename artifacts with a preview before applying changes;
21
+ - read and write native navigation profiles, role homes and recursive menus;
22
+ - preserve theme, widget, resource and Java assets with SHA-256 manifests;
23
+ - inventory design tokens, check contrast and preview atomic literal migration;
24
+ - discover native OQL and render safe logical SQL views only when OQL exists;
25
+ - materialize an isolated, Runtime-synchronized PostgreSQL for direct SQL inspection;
26
+ - analyze PostgreSQL/SQL Server plans and rank cumulative PostgreSQL workload pressure;
27
+ - move standalone units between folders in the same module with a preview;
28
+ - remove standalone units only after reference and child-unit safety checks;
29
+ - run static analysis and executable model evaluations in Ruby;
30
+ - execute functional microflow tests locally or in disposable containers.
31
+ - search and install reusable Ruby modules with a locked SHA-256 digest.
32
+ - write, inspect and compare deterministic MDA containers without invoking `mxbuild`;
33
+ - assemble executable portable Runtime ZIPs from materialized deployments and
34
+ installed version-matched Runtime files without invoking `mx` or `mxbuild`;
35
+ - preflight an existing MPR against its version-selected native web pipeline,
36
+ with precise unsupported widget, action, layout and nanoflow findings;
37
+ - clone, inspect and synchronize official Team Server Git repositories while
38
+ keeping PAT values in user-managed files.
39
+
40
+ The public validation matrix currently covers structural v1/v2 round trips
41
+ from Mendix 5.21 through 11.12 and official MxBuild checks where the native
42
+ toolchain is supported. Exact Mendix 5 validation still depends on
43
+ Windows/Studio Pro and remains a documented legacy limitation, but it is not a
44
+ current delivery gate. See
45
+ [the validation matrix](docs/en-US/validation-matrix.md) for the exact evidence and
46
+ confidence boundaries.
47
+
48
+ ## Requirements
49
+
50
+ - Ruby 4.0 or newer;
51
+ - SQLite3;
52
+ - the exact Mendix Linux toolchain for official checks;
53
+ - Java matching the project when running locally, or Docker for containerized
54
+ builds and runtime tests.
55
+
56
+ Install dependencies:
57
+
58
+ ```sh
59
+ bundle install
60
+ ```
61
+
62
+ ## Ruby DSL
63
+
64
+ ```ruby
65
+ Mxrb.define("Shop.mpr") do
66
+ mendix_version "11.12.1"
67
+
68
+ self.module :Sales do
69
+ entity :Order do
70
+ string :Number, documentation: "Stable order number"
71
+ decimal :Total, default: 0
72
+ end
73
+
74
+ microflow :CreateOrder do
75
+ return_type :Order
76
+ create_object "Sales.Order", as: :order
77
+ return_value :order
78
+ end
79
+ end
80
+ end
81
+ ```
82
+
83
+ ```sh
84
+ bundle exec mxrb generate shop.rb
85
+ bundle exec mxrb validate Shop.mpr
86
+ bundle exec mxrb export Shop.mpr exported-shop
87
+ bundle exec mxrb compare original.mpr rebuilt.mpr
88
+ bundle exec mxrb module search
89
+ bundle exec mxrb module add shared-kernel
90
+ bundle exec mxrb cache status Shop.mpr
91
+ bundle exec mxrb cache warm Shop.mpr
92
+ bundle exec mxrb cache clear Shop.mpr
93
+ bundle exec mxrb oql Shop.mpr --dialect postgresql
94
+ bundle exec mxrb db up Shop.mpr
95
+ bundle exec mxrb db sql Shop.mpr 'SELECT * FROM "sales$order" LIMIT 20'
96
+ bundle exec mxrb pack Shop.mpr --output build/Shop.mda
97
+ bundle exec mxrb portable Shop.mpr --output build/runtime.zip
98
+ bundle exec mxrb team-server clone APP_ID ./shop --pat-file /secure/team-server.env
99
+ ```
100
+
101
+ The MPR stores the model, not application data. `db up` builds the exact
102
+ portable Runtime and lets it synchronize an isolated PostgreSQL volume.
103
+ Database access is loopback-only and uses a read-only analyst role unless
104
+ `--write` is explicitly requested. See
105
+ [OQL and local SQL access](docs/en-US/oql-sql.md).
106
+
107
+ ## Model evaluations
108
+
109
+ ```ruby
110
+ # evaluation.rb
111
+ artifact "Sales.Order", kind: :entity
112
+ no_call_cycles
113
+ no_missing_internal_references
114
+
115
+ check "Order has a total" do |project|
116
+ project.find_artifact("Sales.Order.Total", kind: :attribute)
117
+ end
118
+ ```
119
+
120
+ ```sh
121
+ bundle exec mxrb evaluate Shop.mpr evaluation.rb
122
+ ```
123
+
124
+ ## Functional microflow tests
125
+
126
+ Functional definitions are Ruby and do not require JUnit:
127
+
128
+ ```ruby
129
+ # functional_test.rb
130
+ microflow "creates an order", call: "Sales.ACT_CreateOrder"
131
+ ```
132
+
133
+ Run with the local toolchain:
134
+
135
+ ```sh
136
+ JAVA_HOME=/path/to/jdk \
137
+ bundle exec mxrb test Shop.mpr functional_test.rb
138
+ ```
139
+
140
+ Or build and run inside disposable containers:
141
+
142
+ ```sh
143
+ bundle exec mxrb test Shop.mpr functional_test.rb --docker
144
+ ```
145
+
146
+ The source project is copied before instrumentation. Structural validation is
147
+ performed natively by MXRB. The instrumented functional build still requires
148
+ materializing changed microflows; that build, runtime database and uploaded
149
+ files are discarded after execution.
150
+ The functional scope verifies completion, exception handling, return values
151
+ and persisted state through entity/XPath count assertions.
152
+
153
+ ## Development
154
+
155
+ ```sh
156
+ bundle exec rspec
157
+ MXRB_COVERAGE=1 MXRB_LINE_COVERAGE_MIN=100 MXRB_BRANCH_COVERAGE_MIN=100 bundle exec rspec
158
+ bundle exec ruby script/branch_report.rb
159
+ bundle exec rubocop
160
+ ```
161
+
162
+ CI and the local coverage helper enforce 100% line and 100% branch coverage.
163
+ The branch report lists any regression by source file and line.
164
+
165
+ Architecture and deeper writing guidance are available in
166
+ [the English documentation](docs/en-US/README.md). The complete documentation
167
+ is also available in [Portuguese](docs/pt-BR/README.md) and
168
+ [German](docs/de-DE/README.md).
169
+
170
+ ## License
171
+
172
+ MXRB is available under the MIT License.
data/README.pt-BR.md ADDED
@@ -0,0 +1,109 @@
1
+ # MXRB
2
+
3
+ [English](README.md) · **Português** · [Deutsch](README.de-DE.md)
4
+
5
+ MXRB é uma ferramenta Ruby-first para ler, escrever, exportar, validar e testar
6
+ projetos Mendix (`.mpr`) sem MDL ou `mxcli`.
7
+
8
+ ## Capacidades
9
+
10
+ - leitura e escrita profunda de MPR v1/v2;
11
+ - exportação de projetos para Ruby editável;
12
+ - geração idempotente por DSL Ruby;
13
+ - scaffold de projeto novo com módulo principal em PascalCase;
14
+ - edição profunda em Ruby de toda unit nativa, com baseline sem perdas;
15
+ - comparação, diff semântico, referências e análise de impacto;
16
+ - renomeação segura com prévia;
17
+ - movimentação de units entre pastas do mesmo módulo com prévia;
18
+ - remoção de units independentes com verificação de referências e filhos;
19
+ - lint e avaliações executáveis de modelo;
20
+ - descoberta de OQL nativo e visão SQL lógica somente quando o projeto contém OQL;
21
+ - PostgreSQL isolado e sincronizado pelo Runtime para consultas SQL diretas;
22
+ - análise de planos PostgreSQL/SQL Server e workload cumulativo PostgreSQL;
23
+ - testes funcionais de microflows localmente ou em Docker.
24
+ - busca e instalação de módulos Ruby reutilizáveis com SHA-256 travado.
25
+
26
+ A matriz preserva estruturalmente projetos Mendix 5.21–11.12. A validação
27
+ nativa exata do Mendix 5 ainda depende de Windows/Studio Pro e é uma limitação
28
+ explícita do MXRB; ela não faz parte do gate automatizado direto.
29
+
30
+ ## Requisitos
31
+
32
+ Ruby 4.0+, SQLite3 e, para gates oficiais, o toolchain Mendix exato. O modo
33
+ local precisa do Java compatível; o modo Docker fornece JDK e Runtime.
34
+
35
+ ```sh
36
+ bundle install
37
+ bundle exec mxrb init vet_clinic
38
+ bundle exec mxrb validate App.mpr
39
+ bundle exec mxrb export App.mpr app-ruby
40
+ bundle exec mxrb compare original.mpr reconstruido.mpr
41
+ bundle exec mxrb module search
42
+ bundle exec mxrb module add shared-kernel
43
+ bundle exec mxrb cache status App.mpr
44
+ bundle exec mxrb cache warm App.mpr
45
+ bundle exec mxrb cache clear App.mpr
46
+ bundle exec mxrb oql App.mpr --dialect postgresql
47
+ bundle exec mxrb db up App.mpr
48
+ bundle exec mxrb db sql App.mpr 'SELECT * FROM "sales$order" LIMIT 20'
49
+ ```
50
+
51
+ O MPR armazena o modelo, não os dados da aplicação. `db up` compila o Runtime
52
+ portátil exato e permite que ele sincronize um volume PostgreSQL isolado. O
53
+ acesso é restrito a loopback e usa um papel somente leitura, salvo quando
54
+ `--write` é solicitado explicitamente. Consulte
55
+ [OQL e acesso SQL local](docs/pt-BR/oql-sql.md).
56
+
57
+ ## Ruby DSL
58
+
59
+ ```ruby
60
+ Mxrb.define("Shop.mpr") do
61
+ mendix_version "11.12.1"
62
+ self.module :Sales do
63
+ entity :Order do
64
+ string :Number, documentation: "Número estável do pedido"
65
+ decimal :Total, default: 0
66
+ end
67
+ end
68
+ end
69
+ ```
70
+
71
+ ## Avaliações e testes funcionais
72
+
73
+ ```ruby
74
+ artifact "Sales.Order", kind: :entity
75
+ no_call_cycles
76
+ no_missing_internal_references
77
+ ```
78
+
79
+ ```ruby
80
+ microflow "cria pedido", call: "Sales.ACT_CreateOrder"
81
+ ```
82
+
83
+ ```sh
84
+ bundle exec mxrb evaluate Shop.mpr evaluation.rb
85
+ bundle exec mxrb test Shop.mpr functional_test.rb --docker
86
+ ```
87
+
88
+ Não há JUnit ou MDL. A instrumentação, o pacote, o banco e os uploads existem
89
+ somente na cópia descartável; o projeto original não é alterado.
90
+ As asserções cobrem retorno do microflow e estado persistido por contagens
91
+ de entidade/XPath.
92
+
93
+ ## Desenvolvimento
94
+
95
+ ```sh
96
+ bundle exec rspec
97
+ MXRB_COVERAGE=1 bundle exec rspec
98
+ bundle exec ruby script/branch_report.rb
99
+ bundle exec rubocop
100
+ ```
101
+
102
+ A suíte exige 100% de cobertura de linhas e branches. O relatório de branches
103
+ lista qualquer regressão por arquivo e linha.
104
+
105
+ Consulte a [documentação completa em português](docs/pt-BR/README.md).
106
+
107
+ ## Licença
108
+
109
+ MIT.