Skip to content

Commit de70ddc

Browse files
committed
docs: mise à jour complète de la documentation en anglais et synchronisation avec EngineRunner
1 parent e5afc88 commit de70ddc

7 files changed

Lines changed: 346 additions & 778 deletions

File tree

README.md

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,14 @@ Build Python apps with a predictable workflow, a configurable pre-compile pipeli
1515
## Core capabilities
1616

1717
- **BCASL pre-compile pipeline**: validation, preparation, transformation before the build, with timeouts and safety controls.
18-
- **Multi-engine builds**: switch between PyInstaller, Nuitka, and cx_Freeze without changing your workflow.
19-
- **Extensible engines**: create your own engine and add it to ARK++ when needed.
18+
- **Unified EngineRunner architecture**: a single source of truth for both CLI and GUI compilation, ensuring identical build results across all interfaces.
19+
- **BuildContext-driven builds**: engines receive a normalized project context, abstracting away the source of configuration (YAML vs. Lock files).
20+
- **Multi-engine support**: switch between PyInstaller, Nuitka, and cx_Freeze seamlessly.
21+
- **Extensible SDKs**: create new engines and BCASL plugins using simplified, consolidated APIs.
2022
- **Auto-detection for tricky dependencies**: engine-specific auto-args based on requirements or import scanning.
2123
- **Workspace-first UI**: filter files, manage exclusions, and follow progress and logs in one place.
2224
- **Venv-aware execution**: engines can use the project virtual environment automatically.
23-
- **Structured CLI**:
24-
- **Extensible SDKs**: create new engines and BCASL plugins with the provided SDKs.
25-
- **Theme-aware dynamic colors and SVG icons**: 100% dynamic UI integration using QPalette and themed SVGs.
26-
- **Customizable**: theming and translations out of the box.
25+
- **Theme-aware dynamic UI**: 100% dynamic integration using QPalette and themed SVGs.
2726

2827
---
2928

@@ -143,19 +142,15 @@ python pycompiler_ark.py init --entry main.py --json
143142

144143
## Project layout
145144

146-
- `Ui/Cli/` — active ARK CLI entrypoints, runtime helpers, discovery, and command tree.
147-
- `Core/` — main UI logic.
148-
- `Core/IdeLikeGui/` — wiring layer for the IDE-like main GUI.
149-
- `ENGINES/` — built-in engines.
150-
- `EngineLoader/` — discovery and registry.
151-
- `Plugins/` — BCASL plugins.
152-
- `Plugins_SDK/` — plugin SDK.
153-
- `bcasl/` — BCASL core.
154-
- `Ui/Forms/` — Qt Designer UI forms.
155-
- `Ui/Forms/classic_main_window.ui` — default main layout
156-
- `Ui/Forms/ide_main_window.ui` — IDE-like layout
157-
- `languages/` — translations.
158-
- `themes/` — QSS themes.
145+
- `Ui/Cli/`: Command-line interface implementation and entry points.
146+
- `Core/`: Core business logic for compilation, workspace management, and settings.
147+
- `Core/Compiler/`: The **EngineRunner** and **MainProcess** (single source of truth for builds).
148+
- `engines/`: Built-in compilation engines (PyInstaller, Nuitka, cx_Freeze).
149+
- `bcasl/`: BCASL core engine and plugin loader.
150+
- `Plugins/`: Pre-compile pipeline plugins.
151+
- `engine_sdk/` & `Plugins_SDK/`: Developer kits for extending ARK.
152+
- `Ui/Forms/`: Qt Designer `.ui` files for the IDE-like and Classic layouts.
153+
- `languages/` & `themes/`: Application-wide translations and QSS themes.
159154

160155
---
161156

docs/ark_main_config.md

Lines changed: 23 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
11
## **ark.yml** — Workspace Configuration
22

3-
This file customizes how a workspace is scanned and built. It lives at the
4-
workspace root and is created automatically when the workspace is first set
5-
in the GUI (if missing).
3+
This file defines the project settings used to build the normalized **BuildContext**. It lives at the workspace root and is created automatically when the workspace is first set in the GUI (if missing).
64

7-
The configuration is loaded by `Core/Configs/` and merged with
8-
defaults.
9-
10-
## Location
11-
12-
The spec-first CLI requires `ark.yml` at the workspace root. The compatibility
13-
loader still accepts the older names used by the classic GUI path.
5+
The configuration is loaded by `Core/Configs/` and serves as the primary source of truth for project metadata.
146

157
## Minimal Example
168

@@ -29,61 +21,39 @@ workspace:
2921
build:
3022
engine: pyinstaller
3123
output: dist/
32-
data: []
24+
icon: assets/icon.ico
25+
data:
26+
- source: assets/
27+
destination: assets/
3328
```
3429
3530
## Build Entrypoint
3631
37-
`project.entry` defines the single file to compile. It must be a path
38-
relative to the workspace root.
32+
`project.entry` defines the primary script to compile. It must be a path relative to the workspace root.
3933

4034
Behavior:
41-
- If `entrypoint` is set and the file exists, only that file is compiled.
42-
- If it is missing or invalid, compilation is blocked until a valid entrypoint
43-
is selected.
35+
- When a build is triggered (CLI or GUI), this entrypoint is used to populate the `BuildContext`.
36+
- In the GUI, you can select any file to compile, but the `project.entry` remains the default configuration.
37+
- If it is missing or invalid, compilation is blocked until a valid entrypoint is selected.
4438

45-
GUI shortcut:
39+
GUI shortcuts:
4640
- Right‑click a file in the workspace list → **Set as entrypoint**.
4741
- Right‑click again → **Clear entrypoint**.
4842
- The entrypoint is marked with an icon in the list.
4943

50-
## Notes
51-
52-
- Keep paths relative (ex: `"src/main.py"`).
53-
- Entrypoint is stored in `ark.yml` as `project.entry` and can be edited manually.
54-
- This file is separate from `bcasl.yml` (which remains the canonical BCASL plugin config file).
55-
- A small compatibility bridge also exists under `plugins.*` for workspace-level BCASL defaults such as:
56-
- `plugins.bcasl_enabled`
57-
- `plugins.plugin_timeout`
58-
59-
## Advanced Config Editor (GUI)
60-
61-
The main GUI has a **Configurations avancées** button that opens a dedicated
62-
editor for:
63-
- `ark.yml`
64-
- `bcasl.yml`
65-
- `.ark/pref.json` (workspace‑specific preferences)
44+
## Relationship to BuildContext
6645

67-
Features:
68-
- Monospace editor
69-
- Simple YAML/JSON syntax highlighting
70-
- Diff view before saving
71-
- Basic validation on save (YAML/JSON)
46+
The fields in `ark.yml` are mapped directly to the `BuildContext` data structure passed to engines:
7247

73-
## Workspace Prefs (.ark/pref.json)
48+
| ark.yml field | BuildContext field |
49+
| :--- | :--- |
50+
| `project.name` | `project_name` |
51+
| `project.entry` | `entry_point` |
52+
| `workspace.exclude` | `exclude_patterns` |
53+
| `build.output` | `output_dir` |
54+
| `build.data` | `data_mappings` |
55+
| `build.icon` | `icon` |
7456

75-
Per‑workspace preferences are stored in:
76-
```
77-
<workspace>/.ark/pref.json
78-
```
79-
80-
Currently used keys:
81-
```json
82-
{
83-
"venv_mode": "venv" | "system",
84-
"venv_path": "/abs/path/to/venv" | null
85-
}
86-
```
57+
## Advanced Config Editor (GUI)
8758

88-
These values are updated when you select a venv or System Python, and are
89-
re‑applied automatically when the workspace is loaded.
59+
The main GUI has a **Configurations avancées** button that opens a dedicated editor for `ark.yml`, `bcasl.yml`, and other configuration files.

docs/contributing.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# **Contributing to PyCompiler ARK**
2+
3+
Thank you for your interest in contributing to ARK! This workshop is designed to be extensible through its multi-engine and pre-compile plugin systems.
4+
5+
## **Where to Start?**
6+
7+
If you are a developer looking to extend ARK's functionality, please refer to the following guides:
8+
9+
- **Creating a Compilation Engine**: [docs/how_to_create_an_engine.md](how_to_create_an_engine.md)
10+
Learn how to package and register a new compiler (e.g., Py2Exe, Docker).
11+
- **Creating a Pre-Compile Plugin**: [docs/how_to_create_a_bc_plugin.md](how_to_create_a_bc_plugin.md)
12+
Learn how to add validation, cleanup, or preparation steps to the build pipeline.
13+
14+
## **Technical Specifications**
15+
16+
For a deeper dive into ARK's internal architecture, review our core specifications:
17+
18+
- **BuildContext Spec**: [docs/dev_docs/ARK_BuildContext_v1.0.md](dev_docs/ARK_BuildContext_v1.0.md)
19+
- **CLI Spec**: [docs/dev_docs/ARK_Cli_v1.1.md](dev_docs/ARK_Cli_v1.1.md)
20+
- **Locking Spec**: [docs/dev_docs/ARK_Locking_v1.0.md](dev_docs/ARK_Locking_v1.0.md)
21+
22+
## **Development Workflow**
23+
24+
1. **Code Style**: We use `ruff` for linting and `black` for formatting.
25+
2. **Testing**: Run tests using `pytest`.
26+
3. **Engine Registry**: New engines should be placed in the `ENGINES/` directory.
27+
28+
## **License**
29+
30+
By contributing, you agree that your contributions will be licensed under the project's **Apache-2.0** license.

0 commit comments

Comments
 (0)