You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+14-19Lines changed: 14 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,15 +15,14 @@ Build Python apps with a predictable workflow, a configurable pre-compile pipeli
15
15
## Core capabilities
16
16
17
17
-**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.
20
22
-**Auto-detection for tricky dependencies**: engine-specific auto-args based on requirements or import scanning.
21
23
-**Workspace-first UI**: filter files, manage exclusions, and follow progress and logs in one place.
22
24
-**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.
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).
6
4
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.
14
6
15
7
## Minimal Example
16
8
@@ -29,61 +21,39 @@ workspace:
29
21
build:
30
22
engine: pyinstaller
31
23
output: dist/
32
-
data: []
24
+
icon: assets/icon.ico
25
+
data:
26
+
- source: assets/
27
+
destination: assets/
33
28
```
34
29
35
30
## Build Entrypoint
36
31
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.
39
33
40
34
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.
44
38
45
-
GUI shortcut:
39
+
GUI shortcuts:
46
40
- Right‑click a file in the workspace list → **Set as entrypoint**.
47
41
- Right‑click again → **Clear entrypoint**.
48
42
- The entrypoint is marked with an icon in the list.
49
43
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
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:
0 commit comments