====== Ambiente di sviluppo ======
Panoramica della struttura del progetto e dei percorsi importanti per WvdS FPC RAD Studio.
**Tilde (~)** indica la root del repository (es. ''%WORKSPACE%/WvdS.FPC''). Tutti i percorsi usano forward-slash.
===== Struttura del progetto =====
~/
├── sources/ # SSOT - versionato (SVN)
│ ├── common/ # Unit/Lib condivise (FPC + pas2js)
│ │ ├── core/ # Unit base (no UI)
│ │ ├── ui/ # UI Framework
│ │ │ ├── controls/ # Controlli base
│ │ │ ├── components/ # Componenti compositi
│ │ │ ├── runtime/ # Runtime PXAML
│ │ │ └── targets/ # Renderer (tui/gui/web)
│ │ └── web/ # Host Bridges (solo pas2js)
│ │ ├── nodejs/ # API Node.js
│ │ └── vscode/ # API estensioni VSCode
│ ├── extensions/ # Pacchetti VSIX
│ ├── applications/ # Prodotti/Demo
│ ├── tools/ # wvds-build, pxamlc
│ └── packages/ # Pacchetti IDE
│
├── binaries/ # Output build - NON versionato
│ ├── out/ # Output build
│ ├── cache/ # Cache compilatore
│ ├── dist/ # Artefatti release (.vsix)
│ └── logs/ # Report build, log debug
│
└── assets/ # Asset statici
===== Percorsi del progetto =====
^ Variabile ^ Percorso ^ Descrizione ^
| ''~'' | Root repository | ''%WORKSPACE%/WvdS.FPC'' |
| ''~/sources'' | Sorgenti | Single Source of Truth |
| ''~/sources/common'' | Codice condiviso | Compatibile FPC + pas2js |
| ''~/sources/extensions'' | Estensioni VSIX | Pacchetti VSCode |
| ''~/sources/applications'' | Applicazioni | RAD Suite, Demo |
| ''~/binaries'' | Output build | Eliminabile, rigenerabile |
| ''~/binaries/dist'' | Release | .vsix, installer |
| ''~/binaries/logs'' | Log | Report build, log debug |
| ''~/assets'' | Asset | Icone, template |
===== Variabili d'ambiente =====
Queste variabili sono **segnaposto** e devono essere adattate all'ambiente di sviluppo locale. I percorsi assoluti dovrebbero essere evitati nei file di configurazione.
^ Variabile ^ Valore predefinito ^ Descrizione ^
| ''%LAZARUS%'' | Installazione Lazarus | es. ''C:\Lazarus'' o ''/opt/lazarus'' |
| ''%PROGRAMFILES%'' | Program Files | Windows: ''C:\Program Files'' |
| ''%USERPROFILE%'' | Directory utente | Windows: ''C:\Users\{name}'', Linux: ''~'' |
| ''%WORKSPACE%'' | Directory di lavoro | Definita dall'utente, es. ''E:\Workspace'' |
===== Compilatore e toolchain =====
^ Variabile ^ Percorso relativo ^ Descrizione ^
| FPC | ''%LAZARUS%/fpc/3.3.1/bin'' | Free Pascal Compiler |
| FPC-SRC | ''%LAZARUS%/fpc/3.3.1/source'' | Sorgenti FPC |
| PAS2JS | ''%LAZARUS%/fpc/3.3.1/bin/pas2js.exe'' | Pascal to JavaScript |
| P2J-RTL | ''%LAZARUS%/fpc/pas2js-windows-2.2.0/packages/rtl'' | RTL pas2js |
| P2J-NODE | ''%LAZARUS%/fpc/pas2js-windows-2.2.0/packages/nodejs'' | Binding Node.js |
| P2J-VSCODE | ''%LAZARUS%/fpc/pas2js-windows-2.2.0/packages/vscode'' | Binding VSCode |
===== Riferimenti esterni =====
Questi percorsi sono **opzionali** e rilevanti solo per sviluppatori che vogliono studiare implementazioni di riferimento.
^ Variabile ^ Percorso relativo ^ Descrizione ^
| DXVCL | ''%WORKSPACE%/3rd/DevExpress/VCL'' | DevExpress VCL (Delphi) |
| DXNET | ''%PROGRAMFILES%/DevExpress 25.1/Components/Sources'' | DevExpress .NET |
| NODEJS-SRC | ''%WORKSPACE%/3rd/node-main'' | Sorgenti Node.js |
| VSCODE-SRC | ''%WORKSPACE%/3rd/vscode-main'' | Sorgenti VSCode |
===== Documentazione =====
^ Variabile ^ Percorso relativo ^ Descrizione ^
| DOKUWIKI | ''%DOKUWIKI_DATA%/pages/de/int/vsce/fpc'' | Pagine DokuWiki |
| SKILLS | ''%WORKSPACE%/WvdS.Rihtlinien'' | Definizioni skill |
===== Regole SSOT =====
**Single Source of Truth** - Queste regole sono vincolanti!
- **''~/sources/''** e l'unica fonte per il codice versionato
- **''~/binaries/''** e completamente eliminabile e rigenerabile
- **Mai** duplicare codice runtime in ''~/sources/extensions/''
- **Mai** committare file generati in ''~/sources/''
===== Struttura output build =====
~/binaries/out/{app}/{target}/{mode}/
├── gen/ # Codice generato (ui.generated.pas)
├── bin/ # File eseguibili / Bundle JS
├── assets/ # PXAML, immagini, temi
├── build-plan.json # Configurazione build
└── build-report.md # Protocollo build
^ Target ^ Compilatore ^ Output ^
| ''tui'' | FPC | Console nativa (Windows/Linux) |
| ''gui'' | FPC | Desktop nativo (LCL/WinAPI) |
| ''web'' | pas2js | Bundle JavaScript |
^ Mode ^ Descrizione ^
| ''debug'' | Simboli debug, nessuna ottimizzazione |
| ''release'' | Ottimizzato, simboli rimossi |
| ''profile'' | Release + profiling |
===== Struttura estensione =====
~/sources/extensions/wvds.vscode.{name}/
├── pas/
│ ├── extension_main.pas # Entry Point (OBBLIGATORIO)
│ ├── {Feature}.Models.pas # Strutture dati
│ ├── {Feature}.Service.pas # Logica di business
│ └── {Feature}.Dialog.pas # UI (opzionale)
│
├── dist/
│ ├── extension_main.js # JS compilato
│ └── extension_main.js.map # Source Map
│
├── templates/ # Template WebView
├── images/ # Icone
├── package.json # Manifesto VSCode
├── build.cfg # Configurazione build
└── README.md # Documentazione
===== Vedi anche =====
* [[.:architektur|Panoramica architettura]]
* [[.:build-pipeline|Pipeline di build]]
* [[.:extension-entwicklung|Sviluppo estensioni]]