12 KiB
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
-
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 islocalorgit.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(forlocaltools): Inline definitions for command-line parameters the tool accepts.parameters_definition_file(forgittools): Path to a JSON file (relative to the Git repo root) defining parameters.git_url,git_ref(forgittools): Repository URL and the branch/tag/commit to track.local_dir_name(forgittools): Optional custom name for the local clone directory.
- The heart of the dashboard, this JSON file (located in
-
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).
-
Execution:
- Users provide parameter values through the GUI.
- Clicking "Run Tool" launches the tool's command in a separate, non-blocking process.
- Real-time
stdoutandstderrfrom 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).
-
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.
-
Git Integration (Optional - requires
GitPython):- Status Check: For
gittools, 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_refvia their configuration window. - An "Update All Git Tools" option in the "Tools" menu attempts to clone or update all enabled Git tools.
- Individual Git tools can be updated to their configured
- Cloning: If a
gittool's local directory doesn't exist, the update process will first attempt to clone it from the specifiedgit_url. Cloned repositories are stored in themanaged_tools/directory.
- Status Check: For
-
Tool Configuration:
- A modal dialog allows users to:
- Modify common fields like
display_name,description, andenabledstatus. - For
gittools, change thegit_refto track a different branch, tag, or commit. - View (but not edit in this window) other details like
run_commandorgit_url. - Refresh Git status and trigger updates for the specific tool.
- Modify common fields like
- Changes are saved back to the
tools_registry.jsonfile.
- A modal dialog allows users to:
How It Works - Path Management
- Application Root:
- When run as a script (
python -m projectutility): The root of the clonedProjectUtilityrepository. - When run as a PyInstaller executable: The directory containing the executable.
- When run as a script (
- 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/: Forlocaltool scripts/files.- Script Mode:
[AppRoot]/tools/. - Frozen Mode (PyInstaller): Bundled into
[AppExecutableDir]/_internal/tools/(requires--add-data "tools:tools"in PyInstaller spec). Paths inrun_commandfor local scripts are resolved relative to this.
- Script Mode:
managed_tools/: Forgittool 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
-
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 èlocalogit.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 strumentilocal): Definizioni inline per i parametri a riga di comando accettati dallo strumento.parameters_definition_file(per strumentigit): Percorso a un file JSON (relativo alla radice del repository Git) che definisce i parametri.git_url,git_ref(per strumentigit): URL del repository e il branch/tag/commit da tracciare.local_dir_name(per strumentigit): Nome personalizzato opzionale per la directory di clone locale.
- Il cuore del dashboard, questo file JSON (situato in
-
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).
-
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.
stdoutestderrin 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).
-
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.
-
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_refconfigurato 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.
- Singoli strumenti Git possono essere aggiornati al loro
- Clonazione: Se la directory locale di uno strumento
gitnon esiste, il processo di aggiornamento tenterà prima di clonarla dall'git_urlspecificato. I repository clonati sono memorizzati nella directorymanaged_tools/.
- Controllo Stato: Per gli strumenti
-
Configurazione Strumenti:
- Una finestra di dialogo modale consente agli utenti di:
- Modificare campi comuni come
display_name,descriptione statoenabled. - Per gli strumenti
git, cambiare ilgit_refper tracciare un branch, tag o commit diverso. - Visualizzare (ma non modificare in questa finestra) altri dettagli come
run_commandogit_url. - Aggiornare lo stato Git e attivare aggiornamenti per lo strumento specifico.
- Modificare campi comuni come
- Le modifiche vengono salvate nel file
tools_registry.json.
- Una finestra di dialogo modale consente agli utenti di:
Come Funziona - Gestione dei Percorsi
- Radice dell'Applicazione (AppRoot):
- Quando eseguito come script (
python -m projectutility): La radice del repositoryProjectUtilityclonato. - Quando eseguito come eseguibile PyInstaller: La directory contenente l'eseguibile.
- Quando eseguito come script (
- 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 strumentilocal.- Modalità Script:
[AppRoot]/tools/. - Modalità Frozen (PyInstaller): Impacchettato in
[AppExecutableDir]/_internal/tools/(richiede--add-data "tools:tools"nello spec di PyInstaller). I percorsi inrun_commandper gli script locali sono risolti relativamente a questa.
- Modalità Script:
managed_tools/: Per i cloni degli strumentigit. 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.