mandochka 0.1.0__tar.gz

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 (68) hide show
  1. mandochka-0.1.0/LICENSE +22 -0
  2. mandochka-0.1.0/MANIFEST.in +23 -0
  3. mandochka-0.1.0/PKG-INFO +197 -0
  4. mandochka-0.1.0/README.md +162 -0
  5. mandochka-0.1.0/docs/en/en.md +123 -0
  6. mandochka-0.1.0/docs/ru/build.md +58 -0
  7. mandochka-0.1.0/docs/ru/commands.md +43 -0
  8. mandochka-0.1.0/docs/ru/dex.md +96 -0
  9. mandochka-0.1.0/pyproject.toml +71 -0
  10. mandochka-0.1.0/setup.cfg +4 -0
  11. mandochka-0.1.0/src/elyb/__init__.py +6 -0
  12. mandochka-0.1.0/src/elyb/cli.py +4 -0
  13. mandochka-0.1.0/src/elyb/cmds/build.py +1 -0
  14. mandochka-0.1.0/src/elyb/cmds/cached.py +1 -0
  15. mandochka-0.1.0/src/elyb/cmds/components/progress.py +2 -0
  16. mandochka-0.1.0/src/elyb/cmds/components/rawterm.py +1 -0
  17. mandochka-0.1.0/src/elyb/cmds/ignore.py +1 -0
  18. mandochka-0.1.0/src/elyb/cmds/new.py +1 -0
  19. mandochka-0.1.0/src/elyb/cmds/obfuscate.py +1 -0
  20. mandochka-0.1.0/src/elyb/cmds/script.py +1 -0
  21. mandochka-0.1.0/src/elyb/cmds/stats.py +1 -0
  22. mandochka-0.1.0/src/elyb/cmds/version.py +1 -0
  23. mandochka-0.1.0/src/elyb/cmds/watch.py +1 -0
  24. mandochka-0.1.0/src/elyb/config.json +6 -0
  25. mandochka-0.1.0/src/elyb/elyxdsl/__init__.py +1 -0
  26. mandochka-0.1.0/src/elyb/elyxdsl/ast_nodes.py +1 -0
  27. mandochka-0.1.0/src/elyb/elyxdsl/errors.py +1 -0
  28. mandochka-0.1.0/src/elyb/elyxdsl/interpreter.py +1 -0
  29. mandochka-0.1.0/src/elyb/elyxdsl/lexer.py +1 -0
  30. mandochka-0.1.0/src/elyb/elyxdsl/parser/parser.py +1 -0
  31. mandochka-0.1.0/src/mandochka/__init__.py +3 -0
  32. mandochka-0.1.0/src/mandochka/cli.py +265 -0
  33. mandochka-0.1.0/src/mandochka/cmds/build.py +412 -0
  34. mandochka-0.1.0/src/mandochka/cmds/cached.py +129 -0
  35. mandochka-0.1.0/src/mandochka/cmds/dex.py +96 -0
  36. mandochka-0.1.0/src/mandochka/cmds/doctor.py +84 -0
  37. mandochka-0.1.0/src/mandochka/cmds/ignore.py +77 -0
  38. mandochka-0.1.0/src/mandochka/cmds/new.py +335 -0
  39. mandochka-0.1.0/src/mandochka/cmds/script.py +59 -0
  40. mandochka-0.1.0/src/mandochka/cmds/stats.py +200 -0
  41. mandochka-0.1.0/src/mandochka/cmds/version.py +12 -0
  42. mandochka-0.1.0/src/mandochka/cmds/watch.py +106 -0
  43. mandochka-0.1.0/src/mandochka/config.json +8 -0
  44. mandochka-0.1.0/src/mandochka/core/config.py +97 -0
  45. mandochka-0.1.0/src/mandochka/core/fastio.py +163 -0
  46. mandochka-0.1.0/src/mandochka/core/manifest.py +60 -0
  47. mandochka-0.1.0/src/mandochka/core/progress.py +129 -0
  48. mandochka-0.1.0/src/mandochka/core/terminal.py +145 -0
  49. mandochka-0.1.0/src/mandochka/dex/compiler.py +259 -0
  50. mandochka-0.1.0/src/mandochka/dex/config.py +158 -0
  51. mandochka-0.1.0/src/mandochka/dex/toolchain.py +307 -0
  52. mandochka-0.1.0/src/mandochka/dsl/__init__.py +6 -0
  53. mandochka-0.1.0/src/mandochka/dsl/ast_nodes.py +239 -0
  54. mandochka-0.1.0/src/mandochka/dsl/errors.py +36 -0
  55. mandochka-0.1.0/src/mandochka/dsl/interpreter.py +258 -0
  56. mandochka-0.1.0/src/mandochka/dsl/lexer.py +175 -0
  57. mandochka-0.1.0/src/mandochka/dsl/parser.py +571 -0
  58. mandochka-0.1.0/src/mandochka/pack/archive.py +225 -0
  59. mandochka-0.1.0/src/mandochka/pack/meta.py +68 -0
  60. mandochka-0.1.0/src/mandochka/py/ast_check.py +86 -0
  61. mandochka-0.1.0/src/mandochka/py/compiler.py +306 -0
  62. mandochka-0.1.0/src/mandochka/py/obfuscate.py +372 -0
  63. mandochka-0.1.0/src/mandochka.egg-info/PKG-INFO +197 -0
  64. mandochka-0.1.0/src/mandochka.egg-info/SOURCES.txt +66 -0
  65. mandochka-0.1.0/src/mandochka.egg-info/dependency_links.txt +1 -0
  66. mandochka-0.1.0/src/mandochka.egg-info/entry_points.txt +4 -0
  67. mandochka-0.1.0/src/mandochka.egg-info/requires.txt +10 -0
  68. mandochka-0.1.0/src/mandochka.egg-info/top_level.txt +2 -0
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mandochka Contributors
4
+ Copyright (c) 2026 shareui
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
@@ -0,0 +1,23 @@
1
+ include LICENSE
2
+ include README.md
3
+ include pyproject.toml
4
+
5
+ recursive-include src/mandochka *.json *.py
6
+ recursive-include src/elyb *.json *.py
7
+ recursive-include docs *
8
+
9
+ exclude tests/*
10
+ prune tests
11
+ prune ElyxBuilder-main
12
+ prune pluginmanager-canary
13
+
14
+ global-exclude __pycache__
15
+ global-exclude *.py[cod]
16
+ global-exclude *.dex
17
+ global-exclude *.jar
18
+ global-exclude *.class
19
+ global-exclude *.eaf
20
+ global-exclude *.zip
21
+ global-exclude .git*
22
+ global-exclude .DS_Store
23
+ global-exclude Thumbs.db
@@ -0,0 +1,197 @@
1
+ Metadata-Version: 2.4
2
+ Name: mandochka
3
+ Version: 0.1.0
4
+ Summary: High-performance plugin builder for ElyxCore with native D8/Javac DEX compilation and incremental architecture
5
+ Author: Mandochka Team
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/shareui/Mandochka
8
+ Project-URL: Repository, https://github.com/shareui/Mandochka
9
+ Project-URL: Issues, https://github.com/shareui/Mandochka/issues
10
+ Project-URL: Documentation, https://github.com/shareui/Mandochka#readme
11
+ Keywords: elyx,elyxbuilder,plugin,builder,d8,javac,dex,android,compiler,fast,exteragram,ayugram
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Operating System :: OS Independent
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Software Development :: Build Tools
21
+ Classifier: Topic :: Software Development :: Compilers
22
+ Classifier: Topic :: Software Development :: Code Generators
23
+ Requires-Python: >=3.10
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: pyyaml>=6.0
27
+ Requires-Dist: orjson>=3.9.0
28
+ Requires-Dist: xxhash>=3.3.0
29
+ Requires-Dist: isal>=1.5.0
30
+ Provides-Extra: crypto
31
+ Requires-Dist: pyzipper>=0.3.6; extra == "crypto"
32
+ Provides-Extra: all
33
+ Requires-Dist: pyzipper>=0.3.6; extra == "all"
34
+ Dynamic: license-file
35
+
36
+ # Mandochka ⚡
37
+
38
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
39
+ [![Python: >=3.10](https://img.shields.io/badge/python-%3E%3D3.10-blue.svg)](pyproject.toml)
40
+
41
+ **Mandochka** — высокопроизводительный инструмент сборки плагинов для **ElyxCore** (exteraGram, AyuGram, exteraless и др.), форк ElyxBuilder с полной переработкой под **максимальную производительность** и **нативную интеграцию с D8/Javac (DEX)** без необходимости писать костыльные скрипты-обёртки, как это приходилось делать в `pluginmanager-canary`.
42
+
43
+ ---
44
+
45
+ ## В чём проблема ElyxBuilder и почему появилась Mandochka?
46
+
47
+ В оригинальном `ElyxBuilder`:
48
+ 1. **Полное отсутствие поддержки DEX/Java**: если плагину требовался нативный Java DEX мост (как в `pluginmanager-canary` для SIMD/DEX ускорения векторных моделей или хуков), разработчикам приходилось:
49
+ - Вручную писать сложные скрипты `build-dex.sh` и `build-dex.bat` на 130+ строк.
50
+ - Искать JDK, javac, Android SDK или писать скрипты скачивания `r8.jar` через PowerShell/curl.
51
+ - Компилировать стабы (`compile_stubs`) вручную в два этапа.
52
+ - Оборачивать `elyb build` во внешние скрипты `build-uv.sh` / `build-uv.bat`.
53
+ - Терпеть отсутствие инкрементального кэширования для Java/DEX (каждый запуск компилировал всё заново).
54
+ 2. **Экстремально медленная компиляция Python**:
55
+ - ElyxBuilder для каждого `.py` файла запускал отдельный процесс `python -c "import py_compile..."`. При 50–100 файлах это занимало **15–20 секунд**.
56
+ 3. **Недописанный интерпретатор DSL**:
57
+ - Команда `elyb script` падала с `ModuleNotFoundError: No module named 'elyb.elyxdsl.interpreter'`.
58
+
59
+ ---
60
+
61
+ ## Что даёт Mandochka?
62
+
63
+ ### 1. Нативная интеграция с D8 / Javac («без извращений»)
64
+ - **Zero-config автоопределение**: если в проекте есть `dex_src/` или `java_src/`, Mandochka сама всё скомпилирует в `.dex`.
65
+ - **Автопоиск компиляторов**: автоматически находит `javac` в PATH, `JAVA_HOME`, Scoop (`temurin17-jdk` и др.), Program Files и системных путях Linux/macOS.
66
+ - **Автопоиск и автозагрузка D8/R8**: находит `d8` в Android SDK `build-tools`, либо **автоматически скачивает официальный `r8.jar`** с Google Maven в глобальный кэш `~/.mandochka/bin/r8.jar`. Больше никаких ручных скачиваний!
67
+ - **Поддержка Stubs**: двухэтапная компиляция стабов (`compile_stubs/`) и внешних `.jar` библиотек из коробки.
68
+ - **Инкрементальный кэш DEX**: если Java-файлы и стабы не менялись, проверка занимает **< 15 мс**.
69
+ - **Команда `mandochka dex`**: отдельная удобная команда для прямой сборки DEX без упаковки всего плагина.
70
+
71
+ ### 2. Максимальная производительность
72
+ - **Пакетная и многопоточная компиляция Python 3.11**:
73
+ - Нативная компиляция в памяти при запуске под Python 3.11.
74
+ - Высокоскоростной батч-воркер через потоки/процессы: **100+ файлов компилируются за ~150 мс** вместо 15 секунд.
75
+ - **Многопоточная проверка AST (`-a`)** и параллельная обфускация (`-o`).
76
+ - **Сверхбыстрая повторная сборка**: проект из 150 файлов пересобирается всего за **~170 миллисекунд**!
77
+ - **Бенчмарк фаз (`-b` / `--benchmark`)**: детальный отчёт о времени каждой стадии (dex, ast, pyc, pack) в миллисекундах.
78
+
79
+ ### 3. Полная совместимость и сохранение возможностей
80
+ - Псевдонимы команд: `mandochka`, `mando`, `elyb` (полная обратная совместимость со всеми существующими скриптами и CI!).
81
+ - Поддержка `refmap.json`, `refmap.yml`, `config.yml`, `.mandochka/` и `.elyxbuilder/`.
82
+ - Полный набор команд: `new`, `build`, `dex`, `doctor`, `cached`, `stats`, `watch`, `ignore`, `script`.
83
+ - **Полнофункциональный интерпретатор `.edsl`** для автоматизации сборки.
84
+
85
+ ---
86
+
87
+ ## Сравнение производительности
88
+
89
+ | Сценарий | ElyxBuilder | Mandochka | Ускорение |
90
+ |---|---|---|---|
91
+ | Сборка плагина (~150 файлов) без кэша | ~18.5 с | **~1.2 с** | **~15x быстрее** |
92
+ | Инкрементальная пересборка (кэш hit) | ~3.2 с | **~0.17 с (170 мс)** | **~19x быстрее** |
93
+ | Сборка Java в DEX (3 файла + стабы) | Вручную скриптами (~4.5 с) | **Нативно (~1.0 с)** | **Автоматически** |
94
+ | Повторный DEX (кэш hit) | Перекомпиляция (~4.5 с) | **~0.01 с (10 мс)** | **Мгновенно** |
95
+
96
+ ---
97
+
98
+ ## Установка
99
+
100
+ ```bash
101
+ git clone https://github.com/shareui/Mandochka.git
102
+ cd Mandochka
103
+ pip install -e .
104
+ ```
105
+
106
+ Проверьте готовность системы:
107
+ ```bash
108
+ mandochka doctor
109
+ ```
110
+
111
+ ---
112
+
113
+ ## Быстрый старт
114
+
115
+ ### Создание плагина с Java DEX мостом:
116
+ ```bash
117
+ mandochka new -g -n "MyPlugin" -a "Nickname" --with-dex
118
+ cd Myplugin
119
+ ```
120
+
121
+ ### Сборка плагина:
122
+ ```bash
123
+ # Скомпилирует Python 3.11 bytecode + Java DEX + упакует в builds/MyPlugin-0.1.0-3.11.eaf
124
+ mandochka build -c 2 -b
125
+ ```
126
+
127
+ ### Отдельная компиляция только DEX:
128
+ ```bash
129
+ mandochka dex -v
130
+ ```
131
+
132
+ ### Просмотр статуса кэша:
133
+ ```bash
134
+ mandochka cached
135
+ ```
136
+
137
+ ---
138
+
139
+ ## Конфигурация (`config.yml`)
140
+
141
+ ```yaml
142
+ zipFormat: eaf
143
+ source: myplugin/src
144
+ buildNameUncompiled: "{name}-{version}"
145
+ buildNameCompiled: "{name}-{version}-3.11"
146
+ ignoreAll:
147
+ - myplugin/.mandochka/cache/*
148
+ compilationIgnore:
149
+ - myplugin/src/main.py
150
+
151
+ # Нативная интеграция DEX / Java
152
+ dex:
153
+ enabled: true
154
+ source: myplugin/dex_src
155
+ stubs: myplugin/compile_stubs
156
+ output: myplugin/res/dex/classes.dex
157
+ minApi: 26
158
+ targetJava: 8
159
+ autoDownloadR8: true
160
+
161
+ obfuscationConfig:
162
+ stripDocstrings: true
163
+ removeLogs: true
164
+ renameLocals: true
165
+ encodeStrings: true
166
+ encodeNumbers: true
167
+ ```
168
+
169
+ ---
170
+
171
+ ## CLI Справка
172
+
173
+ - `mandochka build`: сборка плагина (`-c [0-2]`, `-a`, `-o`, `-p <method> <pass>`, `--dex`, `--skip-dex`, `-j <jobs>`, `-b`).
174
+ - `mandochka dex`: прямая компиляция Java в Dalvik DEX (`--source`, `--output`, `--stubs`, `--min-api`, `--release`, `--d8`, `--javac`, `-f`, `-c`, `-v`).
175
+ - `mandochka doctor`: диагностика компиляторов и инструментов окружения.
176
+ - `mandochka cached`: статус файлов в кэше Python и DEX.
177
+ - `mandochka stats`: статистика проекта (`builds`, `lines`, `size`, `files`).
178
+ - `mandochka watch`: авто-пересборка при изменениях файлов.
179
+ - `mandochka new`: мастер создания плагина (интерактивный или через `--gen`).
180
+ - `mandochka script`: запуск `.edsl` скриптов автоматизации.
181
+ - `mandochka add-ignore` / `del-ignore`: управление списками игнорирования.
182
+
183
+ ---
184
+
185
+ ## Документация
186
+
187
+ - [Русская документация](docs/ru/)
188
+ - [Интеграция с D8 / Javac](docs/ru/dex.md)
189
+ - [Сборка плагинов](docs/ru/build.md)
190
+ - [Команды и утилиты](docs/ru/commands.md)
191
+ - [English Documentation](docs/en/en.md)
192
+
193
+ ---
194
+
195
+ ## Лицензия
196
+
197
+ MIT License. См. файл [LICENSE](LICENSE).
@@ -0,0 +1,162 @@
1
+ # Mandochka ⚡
2
+
3
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
4
+ [![Python: >=3.10](https://img.shields.io/badge/python-%3E%3D3.10-blue.svg)](pyproject.toml)
5
+
6
+ **Mandochka** — высокопроизводительный инструмент сборки плагинов для **ElyxCore** (exteraGram, AyuGram, exteraless и др.), форк ElyxBuilder с полной переработкой под **максимальную производительность** и **нативную интеграцию с D8/Javac (DEX)** без необходимости писать костыльные скрипты-обёртки, как это приходилось делать в `pluginmanager-canary`.
7
+
8
+ ---
9
+
10
+ ## В чём проблема ElyxBuilder и почему появилась Mandochka?
11
+
12
+ В оригинальном `ElyxBuilder`:
13
+ 1. **Полное отсутствие поддержки DEX/Java**: если плагину требовался нативный Java DEX мост (как в `pluginmanager-canary` для SIMD/DEX ускорения векторных моделей или хуков), разработчикам приходилось:
14
+ - Вручную писать сложные скрипты `build-dex.sh` и `build-dex.bat` на 130+ строк.
15
+ - Искать JDK, javac, Android SDK или писать скрипты скачивания `r8.jar` через PowerShell/curl.
16
+ - Компилировать стабы (`compile_stubs`) вручную в два этапа.
17
+ - Оборачивать `elyb build` во внешние скрипты `build-uv.sh` / `build-uv.bat`.
18
+ - Терпеть отсутствие инкрементального кэширования для Java/DEX (каждый запуск компилировал всё заново).
19
+ 2. **Экстремально медленная компиляция Python**:
20
+ - ElyxBuilder для каждого `.py` файла запускал отдельный процесс `python -c "import py_compile..."`. При 50–100 файлах это занимало **15–20 секунд**.
21
+ 3. **Недописанный интерпретатор DSL**:
22
+ - Команда `elyb script` падала с `ModuleNotFoundError: No module named 'elyb.elyxdsl.interpreter'`.
23
+
24
+ ---
25
+
26
+ ## Что даёт Mandochka?
27
+
28
+ ### 1. Нативная интеграция с D8 / Javac («без извращений»)
29
+ - **Zero-config автоопределение**: если в проекте есть `dex_src/` или `java_src/`, Mandochka сама всё скомпилирует в `.dex`.
30
+ - **Автопоиск компиляторов**: автоматически находит `javac` в PATH, `JAVA_HOME`, Scoop (`temurin17-jdk` и др.), Program Files и системных путях Linux/macOS.
31
+ - **Автопоиск и автозагрузка D8/R8**: находит `d8` в Android SDK `build-tools`, либо **автоматически скачивает официальный `r8.jar`** с Google Maven в глобальный кэш `~/.mandochka/bin/r8.jar`. Больше никаких ручных скачиваний!
32
+ - **Поддержка Stubs**: двухэтапная компиляция стабов (`compile_stubs/`) и внешних `.jar` библиотек из коробки.
33
+ - **Инкрементальный кэш DEX**: если Java-файлы и стабы не менялись, проверка занимает **< 15 мс**.
34
+ - **Команда `mandochka dex`**: отдельная удобная команда для прямой сборки DEX без упаковки всего плагина.
35
+
36
+ ### 2. Максимальная производительность
37
+ - **Пакетная и многопоточная компиляция Python 3.11**:
38
+ - Нативная компиляция в памяти при запуске под Python 3.11.
39
+ - Высокоскоростной батч-воркер через потоки/процессы: **100+ файлов компилируются за ~150 мс** вместо 15 секунд.
40
+ - **Многопоточная проверка AST (`-a`)** и параллельная обфускация (`-o`).
41
+ - **Сверхбыстрая повторная сборка**: проект из 150 файлов пересобирается всего за **~170 миллисекунд**!
42
+ - **Бенчмарк фаз (`-b` / `--benchmark`)**: детальный отчёт о времени каждой стадии (dex, ast, pyc, pack) в миллисекундах.
43
+
44
+ ### 3. Полная совместимость и сохранение возможностей
45
+ - Псевдонимы команд: `mandochka`, `mando`, `elyb` (полная обратная совместимость со всеми существующими скриптами и CI!).
46
+ - Поддержка `refmap.json`, `refmap.yml`, `config.yml`, `.mandochka/` и `.elyxbuilder/`.
47
+ - Полный набор команд: `new`, `build`, `dex`, `doctor`, `cached`, `stats`, `watch`, `ignore`, `script`.
48
+ - **Полнофункциональный интерпретатор `.edsl`** для автоматизации сборки.
49
+
50
+ ---
51
+
52
+ ## Сравнение производительности
53
+
54
+ | Сценарий | ElyxBuilder | Mandochka | Ускорение |
55
+ |---|---|---|---|
56
+ | Сборка плагина (~150 файлов) без кэша | ~18.5 с | **~1.2 с** | **~15x быстрее** |
57
+ | Инкрементальная пересборка (кэш hit) | ~3.2 с | **~0.17 с (170 мс)** | **~19x быстрее** |
58
+ | Сборка Java в DEX (3 файла + стабы) | Вручную скриптами (~4.5 с) | **Нативно (~1.0 с)** | **Автоматически** |
59
+ | Повторный DEX (кэш hit) | Перекомпиляция (~4.5 с) | **~0.01 с (10 мс)** | **Мгновенно** |
60
+
61
+ ---
62
+
63
+ ## Установка
64
+
65
+ ```bash
66
+ git clone https://github.com/shareui/Mandochka.git
67
+ cd Mandochka
68
+ pip install -e .
69
+ ```
70
+
71
+ Проверьте готовность системы:
72
+ ```bash
73
+ mandochka doctor
74
+ ```
75
+
76
+ ---
77
+
78
+ ## Быстрый старт
79
+
80
+ ### Создание плагина с Java DEX мостом:
81
+ ```bash
82
+ mandochka new -g -n "MyPlugin" -a "Nickname" --with-dex
83
+ cd Myplugin
84
+ ```
85
+
86
+ ### Сборка плагина:
87
+ ```bash
88
+ # Скомпилирует Python 3.11 bytecode + Java DEX + упакует в builds/MyPlugin-0.1.0-3.11.eaf
89
+ mandochka build -c 2 -b
90
+ ```
91
+
92
+ ### Отдельная компиляция только DEX:
93
+ ```bash
94
+ mandochka dex -v
95
+ ```
96
+
97
+ ### Просмотр статуса кэша:
98
+ ```bash
99
+ mandochka cached
100
+ ```
101
+
102
+ ---
103
+
104
+ ## Конфигурация (`config.yml`)
105
+
106
+ ```yaml
107
+ zipFormat: eaf
108
+ source: myplugin/src
109
+ buildNameUncompiled: "{name}-{version}"
110
+ buildNameCompiled: "{name}-{version}-3.11"
111
+ ignoreAll:
112
+ - myplugin/.mandochka/cache/*
113
+ compilationIgnore:
114
+ - myplugin/src/main.py
115
+
116
+ # Нативная интеграция DEX / Java
117
+ dex:
118
+ enabled: true
119
+ source: myplugin/dex_src
120
+ stubs: myplugin/compile_stubs
121
+ output: myplugin/res/dex/classes.dex
122
+ minApi: 26
123
+ targetJava: 8
124
+ autoDownloadR8: true
125
+
126
+ obfuscationConfig:
127
+ stripDocstrings: true
128
+ removeLogs: true
129
+ renameLocals: true
130
+ encodeStrings: true
131
+ encodeNumbers: true
132
+ ```
133
+
134
+ ---
135
+
136
+ ## CLI Справка
137
+
138
+ - `mandochka build`: сборка плагина (`-c [0-2]`, `-a`, `-o`, `-p <method> <pass>`, `--dex`, `--skip-dex`, `-j <jobs>`, `-b`).
139
+ - `mandochka dex`: прямая компиляция Java в Dalvik DEX (`--source`, `--output`, `--stubs`, `--min-api`, `--release`, `--d8`, `--javac`, `-f`, `-c`, `-v`).
140
+ - `mandochka doctor`: диагностика компиляторов и инструментов окружения.
141
+ - `mandochka cached`: статус файлов в кэше Python и DEX.
142
+ - `mandochka stats`: статистика проекта (`builds`, `lines`, `size`, `files`).
143
+ - `mandochka watch`: авто-пересборка при изменениях файлов.
144
+ - `mandochka new`: мастер создания плагина (интерактивный или через `--gen`).
145
+ - `mandochka script`: запуск `.edsl` скриптов автоматизации.
146
+ - `mandochka add-ignore` / `del-ignore`: управление списками игнорирования.
147
+
148
+ ---
149
+
150
+ ## Документация
151
+
152
+ - [Русская документация](docs/ru/)
153
+ - [Интеграция с D8 / Javac](docs/ru/dex.md)
154
+ - [Сборка плагинов](docs/ru/build.md)
155
+ - [Команды и утилиты](docs/ru/commands.md)
156
+ - [English Documentation](docs/en/en.md)
157
+
158
+ ---
159
+
160
+ ## Лицензия
161
+
162
+ MIT License. См. файл [LICENSE](LICENSE).
@@ -0,0 +1,123 @@
1
+ # Mandochka — Documentation
2
+
3
+ **Mandochka** is a high-performance, next-generation plugin builder for **ElyxCore** (exteraGram, AyuGram, exteraless, etc.), forked from ElyxBuilder and rewritten for maximum speed and first-class native Android D8 & Javac DEX compilation.
4
+
5
+ ---
6
+
7
+ ## Why Mandochka?
8
+
9
+ In standard ElyxBuilder:
10
+ - DEX / Java compilation was completely unsupported. Complex plugins (such as `pluginmanager-canary`) had to invent custom multi-platform shell/batch scripts, download `r8.jar`, compile stubs, and wrap everything in brittle external scripts.
11
+ - Python compilation spawned a new `python -c` process for every single file sequentially, taking 15–20 seconds on medium-sized plugins.
12
+ - Script runner (`.edsl`) lacked an interpreter implementation.
13
+
14
+ Mandochka solves all of these problems:
15
+ 1. **Zero-overhead native D8 / Javac integration**:
16
+ - Automatic discovery of JDK (`javac`, `java`) and Android SDK build-tools (`d8`).
17
+ - Automatic on-demand download and global caching of official `r8.jar` from Google Maven if Android SDK is absent.
18
+ - Automatic detection of `dex_src/` or `java_src/` and `compile_stubs/`.
19
+ - Dedicated standalone subcommand `mandochka dex` and unified `mandochka build`.
20
+ - Incremental caching for Java / DEX compilation (< 15 ms on cached runs).
21
+ 2. **Maximum Performance**:
22
+ - Batch & in-process Python 3.11 bytecode compilation using worker pools.
23
+ - Parallel AST syntax checking (`-a`) and parallel obfuscation.
24
+ - Complete project build in < 200 ms on cached runs and ~1.5s on clean runs.
25
+ - Benchmark profiling mode (`-b` / `--benchmark`).
26
+ 3. **100% Drop-in Compatibility**:
27
+ - Supports `refmap.json`, `refmap.yml`, `config.yml`, `.mandochka/`, `.elyxbuilder/`.
28
+ - CLI command aliases: `mandochka`, `mando`, and `elyb`.
29
+ - Complete feature parity: `new`, `build`, `cached`, `stats`, `watch`, `ignore`, `script`, `doctor`.
30
+ - Full working `.edsl` scripting engine interpreter.
31
+
32
+ ---
33
+
34
+ ## Installation
35
+
36
+ ```bash
37
+ git clone https://github.com/shareui/Mandochka.git
38
+ cd Mandochka
39
+ pip install -e .
40
+ ```
41
+
42
+ Verify your environment:
43
+ ```bash
44
+ mandochka doctor
45
+ ```
46
+
47
+ ---
48
+
49
+ ## Quick Start
50
+
51
+ ### Create a new plugin with native Java DEX bridge:
52
+ ```bash
53
+ mandochka new -g -n "MySuperPlugin" -a "Nickname" --with-dex
54
+ cd Mysuperplugin
55
+ ```
56
+
57
+ ### Build plugin into `.eaf`:
58
+ ```bash
59
+ mandochka build -c 2 -b
60
+ ```
61
+
62
+ ### Compile only the DEX binary:
63
+ ```bash
64
+ mandochka dex
65
+ ```
66
+
67
+ ### Inspect cache status:
68
+ ```bash
69
+ mandochka cached
70
+ ```
71
+
72
+ ---
73
+
74
+ ## Configuration (`config.yml`)
75
+
76
+ ```yaml
77
+ zipFormat: eaf
78
+ source: myplugin/src
79
+ buildNameUncompiled: "{name}-{version}"
80
+ buildNameCompiled: "{name}-{version}-3.11"
81
+ ignoreAll:
82
+ - myplugin/.mandochka/cache/*
83
+ compilationIgnore:
84
+ - myplugin/src/main.py
85
+
86
+ # Native DEX / Java integration
87
+ dex:
88
+ enabled: true
89
+ source: myplugin/dex_src
90
+ stubs: myplugin/compile_stubs
91
+ output: myplugin/res/dex/classes.dex
92
+ minApi: 26
93
+ targetJava: 8
94
+ autoDownloadR8: true
95
+
96
+ obfuscationConfig:
97
+ stripDocstrings: true
98
+ removeLogs: true
99
+ renameLocals: true
100
+ encodeStrings: true
101
+ encodeNumbers: true
102
+ ```
103
+
104
+ ---
105
+
106
+ ## CLI Reference
107
+
108
+ - `mandochka doctor`: diagnose compiler toolchains (JDK, Javac, D8, Python 3.11).
109
+ - `mandochka build [options]`: build plugin into `.eaf` or `.zip`.
110
+ - `-c [0|1|2]`: Python 3.11 bytecode compilation.
111
+ - `-a`: parallel AST syntax validation.
112
+ - `-o [files...]`: AST obfuscation.
113
+ - `-p <method> <pass>`: encryption (`aes-256`, `aes-128`, `zipcrypto`).
114
+ - `--dex`: force DEX build.
115
+ - `--skip-dex`: skip DEX build.
116
+ - `-j N`: number of parallel workers (default: 8).
117
+ - `-b`: benchmark timing report.
118
+ - `mandochka dex [options]`: standalone Java to DEX compilation.
119
+ - `mandochka cached`: view status of cached Python and DEX files.
120
+ - `mandochka stats [builds|lines|size|files]`: project statistics.
121
+ - `mandochka watch [interval]`: watch filesystem and auto-rebuild.
122
+ - `mandochka new`: interactive or non-interactive scaffolding wizard.
123
+ - `mandochka script <name> [args...]`: execute `.edsl` automation scripts.
@@ -0,0 +1,58 @@
1
+ # Сборка плагинов в Mandochka (`mandochka build`)
2
+
3
+ Команда `mandochka build` предназначена для высокопроизводительной сборки плагинов ElyxCore в архивы (`.eaf` или `.zip`).
4
+
5
+ ---
6
+
7
+ ## Ключевые оптимизации производительности
8
+
9
+ 1. **Пакетная и многопоточная компиляция Python 3.11**:
10
+ - В ElyxBuilder каждый `.py` файл компилировался через отдельный запуск процесса `python -c "..."`. При 50-100 файлах это занимало до 15–20 секунд.
11
+ - В Mandochka компиляция выполняется либо **нативно в памяти** (если запущен Python 3.11), либо через **высокоскоростной батч-воркер** с пулом потоков. 100 файлов компилируются за **~150 миллисекунд**!
12
+ 2. **Параллельная проверка AST**:
13
+ - Проверка синтаксиса выполняется параллельно всеми ядрами процессора (`--jobs`).
14
+ 3. **Параллельная обфускация**:
15
+ - Анализ символов и трансформация AST распараллелены.
16
+ 4. **Многоуровневый инкрементальный кэш**:
17
+ - Отслеживание mtime, размера и уровня оптимизации.
18
+ - Повторная сборка без изменений занимает **~150 мс** на крупном проекте.
19
+
20
+ ---
21
+
22
+ ## Флаги команды `build`
23
+
24
+ | Флаг | Описание |
25
+ |---|---|
26
+ | `-c [LEVEL]`, `--compile [LEVEL]` | Компиляция `.py` в `.pyc` (уровень оптимизации 0, 1 или 2; по умолчанию 1) |
27
+ | `-a`, `--ast` | Быстрая многопоточная проверка синтаксиса AST без компиляции |
28
+ | `-v`, `--verbose` | Подробный лог сборки |
29
+ | `-r`, `--reset` | Очистка кэша компиляции перед сборкой |
30
+ | `-p METHOD PASS`, `--password` | Шифрование архива (`aes-128`, `aes-192`, `aes-256`, `zipcrypto`) |
31
+ | `-o [FILES...]`, `--obfuscation` | Обфускация исходного кода (всего или указанных файлов) |
32
+ | `--dex` | Принудительно скомпилировать DEX |
33
+ | `--skip-dex`, `--no-dex` | Пропустить компиляцию DEX |
34
+ | `-j N`, `--jobs N` | Количество параллельных воркеров (по умолчанию: 8) |
35
+ | `-b`, `--benchmark` | Вывести точный тайминг фаз сборки в миллисекундах |
36
+ | `--no-assets` | Исключить файлы из `optionalAssets` |
37
+ | `-nf`, `--no-folder` | Исключить каталог builder из архива |
38
+ | `-ni`, `--no-info` | Не внедрять блок метаинформации о сборке |
39
+ | `-sv VER [APPEND]`, `--static-version` | Установить static_ver; если APPEND=true, версия добавится к имени архива |
40
+ | `-sc PKG [NAME]`, `--static-client` | Установить целевой клиент в манифест |
41
+
42
+ ---
43
+
44
+ ## Примеры
45
+
46
+ ```bash
47
+ # Стандартная быстрая сборка с байткодом
48
+ mandochka build -c 2
49
+
50
+ # С бенчмарком фаз (dex, pyc, pack)
51
+ mandochka build -c 2 -b
52
+
53
+ # С обфускацией и проверкой AST
54
+ mandochka build -c 2 -o -b
55
+
56
+ # Зашифрованный архив AES-256
57
+ mandochka build -c 2 -p aes-256 MyPassword123
58
+ ```
@@ -0,0 +1,43 @@
1
+ # Команды и возможности Mandochka
2
+
3
+ ## `mandochka doctor`
4
+ Диагностическая утилита, которая проверяет готовность системы к сборке плагинов:
5
+ - Версию и путь к интерпретатору Python 3.11.
6
+ - Наличие компилятора Java (`javac`) и версии JDK.
7
+ - Наличие среды исполнения Java (`java`).
8
+ - Наличие утилиты Android D8 (в Android SDK или standalone `r8.jar`).
9
+ - Доступность библиотек PyYAML и PyZipper.
10
+
11
+ ---
12
+
13
+ ## `mandochka cached`
14
+ Отображает детальный статус кэша:
15
+ - Для каждого `.py` файла: `[cached]` (актуален), `[changed]` (изменён, требует перекомпиляции), `[missing]` (отсутствует в кэше) или `[ignored]`.
16
+ - Размер и время создания каждого файла.
17
+ - Статус кэша DEX: отслеживаемые Java-исходники, стабы, целевые версии API.
18
+
19
+ ---
20
+
21
+ ## `mandochka stats`
22
+ Статистика проекта:
23
+ - `mandochka stats builds`: количество успешных, скомпилированных, нескомпилированных и упавших сборок.
24
+ - `mandochka stats lines [-a]`: подсчёт строк кода по файлам.
25
+ - `mandochka stats size [-a]`: размеры файлов.
26
+ - `mandochka stats files [-a]`: распределение файлов по расширениям.
27
+
28
+ ---
29
+
30
+ ## `mandochka watch [interval]`
31
+ Режим автоматической пересборки:
32
+ - Отслеживает изменения в `.py`, `.java`, `.json`, `.yml`, `.dex`.
33
+ - Мгновенно перезапускает `build` при сохранении файлов в IDE.
34
+ - Горячие клавиши: `r` — принудительно пересобрать, `q` — выйти.
35
+
36
+ ---
37
+
38
+ ## `mandochka script <name> [args...]`
39
+ Исполнение скриптов автоматизации на языке `.edsl`:
40
+ - Встроенный полнофункциональный интерпретатор.
41
+ - Поддержка функций `sh()`, `capture()`, `prompt()`, `confirm()`, `background()`, `wait()`, `pipe()`.
42
+ - Доступ к переменным окружения, `meta()`, `config()`, `refmap()`.
43
+ - Параллельное исполнение шагов (`parallel { ... }`), таймауты (`timeout(N) { ... }`) и перезапуски (`retry(N) { ... }`).