Go to file
2025-12-01 08:29:48 +01:00
.vscode refactoring with new path 2025-05-05 14:38:19 +02:00
doc add readme and doc 2025-05-06 15:08:05 +02:00
projectutility Aggiunta gestione submoduli 2025-12-01 08:29:48 +01:00
ToolUtils Chore: Stop tracking files based on .gitignore update. 2025-04-29 12:17:49 +02:00
.gitignore Chore: Stop tracking files based on .gitignore update. 2025-05-08 10:58:52 +02:00
ProjectUtility.ico Chore: Stop tracking files based on .gitignore update. 2025-05-08 10:58:52 +02:00
projectutility.spec Chore: Stop tracking files based on .gitignore update. 2025-05-08 10:58:52 +02:00
README.md add readme and doc 2025-05-06 15:08:05 +02:00
requirements.txt add req 2025-11-12 13:09:56 +01:00
Std_Comunication_between_tool.md Initial commit for profile ProjectUtility 2025-04-29 10:09:19 +02:00

Project Utility Dashboard


English

Overview

The Project Utility Dashboard is a Python-based desktop application designed to streamline the management and execution of various developer tools, scripts, and external programs. It offers a centralized Graphical User Interface (GUI) to discover, configure, and launch:

  • Local Tools: Scripts (Python, batch, shell, etc.) or executables stored on your machine.
  • Git-Managed Tools: Utilities and small projects fetched and kept up-to-date directly from Git repositories.

This dashboard is ideal for engineers and developers who frequently use a diverse set of command-line utilities or scripts and desire a more organized, user-friendly, and efficient workflow.

Core Functionality

  1. Tool Registry (tools_registry.json):

    • The heart of the dashboard, this JSON file (located in projectutility/config/) defines all manageable tools.
    • Each tool entry includes:
      • id: A unique identifier.
      • display_name: User-friendly name for the GUI.
      • description: A brief explanation of the tool's purpose.
      • type: Specifies if the tool is local or git.
      • run_command: The command and initial arguments to execute the tool.
      • has_gui: Indicates if the tool itself has a graphical interface (influences how it's launched).
      • enabled: Toggles tool visibility and discoverability.
      • parameters (for local tools): Inline definitions for command-line parameters the tool accepts.
      • parameters_definition_file (for git tools): Path to a JSON file (relative to the Git repo root) defining parameters.
      • git_url, git_ref (for git tools): Repository URL and the branch/tag/commit to track.
      • local_dir_name (for git tools): Optional custom name for the local clone directory.
  2. Discovery & UI:

    • On startup, the dashboard reads the registry and identifies available tools.
    • The main window lists all enabled tools.
    • Selecting a tool displays its description and dynamically generates input fields for its defined parameters.
    • Previously used parameter values are remembered and pre-filled (tool_state.json).
  3. Execution:

    • Users provide parameter values through the GUI.
    • Clicking "Run Tool" launches the tool's command in a separate, non-blocking process.
    • Real-time stdout and stderr from the tool are captured and displayed in the "Output Log" area.
    • JSON-formatted output from tools (with specific keys like type, level, message, progress) can be interpreted for enhanced display (e.g., progress bars, colored log levels).
  4. Process Management:

    • A "Running Tools" panel lists all active processes launched by the dashboard, showing their Run ID, name, status, and PID.
    • Selected processes can be terminated.
  5. Git Integration (Optional - requires GitPython):

    • Status Check: For git tools, the dashboard can fetch updates from the remote and display the repository's status (e.g., up-to-date, behind, diverged). This is shown when a Git tool is selected and can be refreshed in the tool's configuration window.
    • Update Tools:
      • Individual Git tools can be updated to their configured git_ref via their configuration window.
      • An "Update All Git Tools" option in the "Tools" menu attempts to clone or update all enabled Git tools.
    • Cloning: If a git tool's local directory doesn't exist, the update process will first attempt to clone it from the specified git_url. Cloned repositories are stored in the managed_tools/ directory.
  6. Tool Configuration:

    • A modal dialog allows users to:
      • Modify common fields like display_name, description, and enabled status.
      • For git tools, change the git_ref to track a different branch, tag, or commit.
      • View (but not edit in this window) other details like run_command or git_url.
      • Refresh Git status and trigger updates for the specific tool.
    • Changes are saved back to the tools_registry.json file.

How It Works - Path Management

  • Application Root:
    • When run as a script (python -m projectutility): The root of the cloned ProjectUtility repository.
    • When run as a PyInstaller executable: The directory containing the executable.
  • Configuration Files:
    • tools_registry.json: User-editable tool definitions. Expected in [AppRoot]/config/.
    • tool_state.json: Stores last used parameters. Automatically managed in [AppRoot]/config/.
  • Tool Directories:
    • tools/: For local tool scripts/files.
      • Script Mode: [AppRoot]/tools/.
      • Frozen Mode (PyInstaller): Bundled into [AppExecutableDir]/_internal/tools/ (requires --add-data "tools:tools" in PyInstaller spec). Paths in run_command for local scripts are resolved relative to this.
    • managed_tools/: For git tool clones. Always located in [AppRoot]/managed_tools/.
    • logs/: For application logs. Always located in [AppRoot]/logs/.

Target Users

  • Developers needing to execute a variety of build scripts, utility scripts, or helper applications.
  • Engineers managing and running multiple command-line tools with different parameters.
  • Teams looking for a standardized and user-friendly way to launch shared development utilities.

Italiano

Panoramica

Il Project Utility Dashboard è un'applicazione desktop basata su Python progettata per ottimizzare la gestione e l'esecuzione di vari strumenti di sviluppo, script e programmi esterni. Offre un'Interfaccia Utente Grafica (GUI) centralizzata per scoprire, configurare e avviare:

  • Strumenti Locali: Script (Python, batch, shell, ecc.) o eseguibili memorizzati sulla tua macchina.
  • Strumenti Gestiti tramite Git: Utility e piccoli progetti recuperati e mantenuti aggiornati direttamente da repository Git.

Questo dashboard è ideale per ingegneri e sviluppatori che utilizzano frequentemente un insieme diversificato di utility a riga di comando o script e desiderano un flusso di lavoro più organizzato, intuitivo ed efficiente.

Funzionalità Fondamentali

  1. Registro degli Strumenti (tools_registry.json):

    • Il cuore del dashboard, questo file JSON (situato in projectutility/config/) definisce tutti gli strumenti gestibili.
    • Ogni voce di strumento include:
      • id: Un identificatore univoco.
      • display_name: Nome intuitivo per la GUI.
      • description: Una breve spiegazione dello scopo dello strumento.
      • type: Specifica se lo strumento è local o git.
      • run_command: Il comando e gli argomenti iniziali per eseguire lo strumento.
      • has_gui: Indica se lo strumento stesso ha un'interfaccia grafica (influenza come viene avviato).
      • enabled: Attiva/disattiva la visibilità e la scopribilità dello strumento.
      • parameters (per strumenti local): Definizioni inline per i parametri a riga di comando accettati dallo strumento.
      • parameters_definition_file (per strumenti git): Percorso a un file JSON (relativo alla radice del repository Git) che definisce i parametri.
      • git_url, git_ref (per strumenti git): URL del repository e il branch/tag/commit da tracciare.
      • local_dir_name (per strumenti git): Nome personalizzato opzionale per la directory di clone locale.
  2. Scoperta e Interfaccia Utente:

    • All'avvio, il dashboard legge il registro e identifica gli strumenti disponibili.
    • La finestra principale elenca tutti gli strumenti abilitati.
    • Selezionando uno strumento vengono visualizzate la sua descrizione e i campi di input generati dinamicamente per i suoi parametri definiti.
    • I valori dei parametri utilizzati in precedenza vengono ricordati e precompilati (tool_state.json).
  3. Esecuzione:

    • Gli utenti forniscono i valori dei parametri tramite la GUI.
    • Cliccando su "Run Tool" si avvia il comando dello strumento in un processo separato e non bloccante.
    • stdout e stderr in tempo reale dello strumento vengono catturati e visualizzati nell'area "Output Log".
    • L'output formattato JSON dagli strumenti (con chiavi specifiche come type, level, message, progress) può essere interpretato per una visualizzazione migliorata (es. barre di avanzamento, livelli di log colorati).
  4. Gestione dei Processi:

    • Un pannello "Running Tools" elenca tutti i processi attivi avviati dal dashboard, mostrando il loro Run ID, nome, stato e PID.
    • I processi selezionati possono essere terminati.
  5. Integrazione Git (Opzionale - richiede GitPython):

    • Controllo Stato: Per gli strumenti git, il dashboard può recuperare aggiornamenti dal remoto e visualizzare lo stato del repository (es. aggiornato, indietro, divergente). Questo viene mostrato quando si seleziona uno strumento Git e può essere aggiornato nella finestra di configurazione dello strumento.
    • Aggiornamento Strumenti:
      • Singoli strumenti Git possono essere aggiornati al loro git_ref configurato tramite la loro finestra di configurazione.
      • Un'opzione "Update All Git Tools" nel menu "Tools" tenta di clonare o aggiornare tutti gli strumenti Git abilitati.
    • Clonazione: Se la directory locale di uno strumento git non esiste, il processo di aggiornamento tenterà prima di clonarla dall'git_url specificato. I repository clonati sono memorizzati nella directory managed_tools/.
  6. Configurazione Strumenti:

    • Una finestra di dialogo modale consente agli utenti di:
      • Modificare campi comuni come display_name, description e stato enabled.
      • Per gli strumenti git, cambiare il git_ref per tracciare un branch, tag o commit diverso.
      • Visualizzare (ma non modificare in questa finestra) altri dettagli come run_command o git_url.
      • Aggiornare lo stato Git e attivare aggiornamenti per lo strumento specifico.
    • Le modifiche vengono salvate nel file tools_registry.json.

Come Funziona - Gestione dei Percorsi

  • Radice dell'Applicazione (AppRoot):
    • Quando eseguito come script (python -m projectutility): La radice del repository ProjectUtility clonato.
    • Quando eseguito come eseguibile PyInstaller: La directory contenente l'eseguibile.
  • File di Configurazione:
    • tools_registry.json: Definizioni degli strumenti modificabili dall'utente. Previsto in [AppRoot]/config/.
    • tool_state.json: Memorizza gli ultimi parametri utilizzati. Gestito automaticamente in [AppRoot]/config/.
  • Directory degli Strumenti:
    • tools/: Per script/file di strumenti local.
      • Modalità Script: [AppRoot]/tools/.
      • Modalità Frozen (PyInstaller): Impacchettato in [AppExecutableDir]/_internal/tools/ (richiede --add-data "tools:tools" nello spec di PyInstaller). I percorsi in run_command per gli script locali sono risolti relativamente a questa.
    • managed_tools/: Per i cloni degli strumenti git. Sempre situato in [AppRoot]/managed_tools/.
    • logs/: Per i log dell'applicazione. Sempre situato in [AppRoot]/logs/.

Destinatari

  • Sviluppatori che necessitano di eseguire una varietà di script di build, script di utilità o applicazioni di supporto.
  • Ingegneri che gestiscono ed eseguono molteplici strumenti a riga di comando con parametri diversi.
  • Team che cercano un modo standardizzato e intuitivo per avviare utility di sviluppo condivise.

**Punti chiave di questa versione:**

*   **Struttura Chiara**: Suddivisione in "Overview", "Core Functionality", "How It Works - Path Management" e "Target Users" per una migliore leggibilità.
*   **Enfasi sul Flusso**: Spiega come le diverse parti del tool interagiscono (registro -> scoperta -> UI -> esecuzione -> gestione).
*   **Dettagli sulla Configurazione**: Approfondisce il ruolo e la struttura di `tools_registry.json`.
*   **Gestione dei Percorsi Esplicitata**: Chiarisce come i percorsi vengono gestiti in modalità script vs. frozen, il che è cruciale per la comprensione e il troubleshooting.
*   **Terminologia Consistente**: Utilizza termini come "AppRoot" per riferirsi alla directory base in modo dinamico.