====== 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]]