diff --git a/README.md b/README.md new file mode 100644 index 0000000..bb65076 --- /dev/null +++ b/README.md @@ -0,0 +1,174 @@ +# 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. diff --git a/doc/English-manual.md b/doc/English-manual.md new file mode 100644 index 0000000..b63223d --- /dev/null +++ b/doc/English-manual.md @@ -0,0 +1,222 @@ +Assolutamente! Creare un manuale utente completo richiederebbe un po' più di interazione e dettagli specifici sui tuoi "tool" d'esempio, ma posso fornirti una struttura solida e dei contenuti di base che potrai espandere. + +Ecco una bozza per il manuale utente, anch'esso formattato per essere facilmente inserito in un file Markdown o convertito in altri formati. + +```markdown +# Project Utility Dashboard - User Manual + +--- + +## English + +### 1. Introduction + +Welcome to the Project Utility Dashboard! This application is designed to provide a centralized and user-friendly interface for managing and running a variety of command-line tools, scripts, and external applications, whether they are stored locally or managed via Git repositories. + +**Key Goals:** + +* **Simplify Execution**: Run complex tools with multiple parameters through an intuitive GUI. +* **Organize Tools**: Keep all your frequently used utilities in one discoverable place. +* **Manage Git-based Tools**: Easily clone, update, and run tools directly from Git. +* **Improve Workflow**: Save time by remembering parameters and providing a consistent launch experience. + +### 2. Installation & Setup + +**(This section might need customization based on your distribution method)** + +* **Prerequisites**: + * Python 3.8+ + * (Optional but Recommended) Git installed and available in your system's PATH for Git tool functionality. + * (Optional) `GitPython` Python library (`pip install GitPython`) for full Git integration features within the dashboard. If not present, Git-related UI elements will be disabled or show "GitPython Missing". +* **Running from Source**: + 1. Clone the `ProjectUtility` repository. + 2. Install dependencies: `pip install -r requirements.txt` (You'll need to create this file listing `GitPython` if you use it). + 3. Run the application: `python -m projectutility` from the repository root. +* **Using a PyInstaller Executable**: + 1. Download or build the `ProjectUtility.exe` (or platform-specific executable). + 2. Place the executable in a desired directory. + 3. On first run, it might create `config/`, `logs/`, and `managed_tools/` subdirectories alongside the executable if they don't exist. + +### 3. Application Overview + +The main window is divided into several key areas: + +* **Menu Bar**: + * **Tools**: + * `Update All Git Tools`: Attempts to clone or pull updates for all enabled Git tools. + * `Configure Selected Tool...`: Opens a dialog to configure the currently selected tool. + * `Reload Tool List`: Manually rescans the tool registry and updates the tool list. +* **Available Tools Pane (Left)**: Lists all discovered and enabled tools. Clicking a tool selects it for configuration and execution. +* **Tool Options Pane (Top-Right, Scrollable)**: + * Displays the selected tool's `Display Name` and `Description`. + * Shows Git status information if it's a Git-managed tool. + * Dynamically generates input widgets for the tool's defined `Parameters`. +* **Output Log Pane (Middle-Right)**: Shows `stdout` and `stderr` from running tools, as well as status messages from the dashboard itself. +* **Run Button Area (Bottom-Right)**: Contains the "Run Tool" button. +* **Running Tools Pane (Bottom)**: A tree view listing all tools currently being executed by the dashboard, showing their Run ID, Name, Status, and PID. Allows termination of selected processes. + +### 4. Configuring Tools (`tools_registry.json`) + +The core of the dashboard's flexibility lies in the `projectutility/config/tools_registry.json` file (or `[AppExecutableDir]/config/tools_registry.json` for frozen apps). This JSON file contains an array of tool definition objects. + +**Anatomy of a Tool Entry:** + +```json +{ + "id": "unique_tool_id", // Mandatory, unique string + "display_name": "My Awesome Tool", // Mandatory, string shown in GUI + "description": "This tool does awesome things.", // Optional, string + "type": "local", // Mandatory: "local" or "git" + "enabled": true, // Optional, boolean (default: true) + "run_command": ["python", "scripts/my_script.py"], // Mandatory, list of strings + "has_gui": false, // Mandatory, boolean (does the tool have its own GUI?) + "version": "1.0.1", // Optional, string + // --- For type: "local" --- + "parameters": [ // Optional, list of parameter objects + { + "name": "input_file", + "label": "Input File:", + "type": "file", // e.g., string, integer, float, boolean, file, folder + "required": true, + "default": "default.txt", // Optional default value + "description": "Path to the input data file.", // Optional tooltip + "options": {"filter": [["Text Files", "*.txt"], ["All Files", "*.*"]]} // Optional, type-specific + } + ], + // --- For type: "git" --- + "git_url": "https://gitea.example.com/user/my_git_tool.git", // Required for "git" + "git_ref": "main", // Optional, default "main" (branch, tag, or commit) + "local_dir_name": "my_git_tool_clone", // Optional, directory name in managed_tools/ + "parameters_definition_file": "tool_params.json" // Optional, path to JSON file in repo root +} +``` + +**Key Fields Explained:** + +* `id`: Must be unique across all tools. +* `type`: + * `local`: For executables in PATH or scripts within the application's `tools/` directory. + * `tools/` directory (for scripts): + * If run from source: `[RepoRoot]/tools/` + * If run as executable: `[AppExecutableDir]/_internal/tools/` (bundled by PyInstaller) + * `git`: For tools cloned and managed from a Git repository. They will be cloned into `managed_tools/`. +* `run_command`: + * The first element is usually the executable (e.g., `python`, `powershell.exe`, `my_app.exe`). + * Subsequent elements are arguments. + * For local scripts in `tools/`, use paths relative to `tools/`, e.g., `["python", "my_tool_subdir/main.py"]`. The dashboard resolves this to an absolute path. +* `parameters`: An array of objects, each defining an input parameter for the GUI. + * `name`: Internal key for the parameter. + * `label`: Text shown next to the input field. + * `type`: Determines the widget: `string`, `integer`, `float`, `boolean`, `file` (select file), `folder` (select directory). + * `required`: `true` or `false`. + * `default`: A default value. + * `description`: Tooltip text. + * `options`: Type-specific configurations. For `file`: `{"filter": [["Description", "*.ext"]], "save_as": false}`. +* `parameters_definition_file` (for `git` tools): If specified, this is a path *relative to the root of the cloned Git repository* to a JSON file. This JSON file must have a root object with a key `"parameters"` which is an array of parameter objects (same format as inline `parameters`). +* `local_dir_name` (for `git` tools): If omitted, the `id` is used as the directory name within `managed_tools/`. + +**Example: Local Python Script** + +```json +{ + "id": "my_local_script", + "display_name": "My Data Processor", + "description": "Processes CSV data using a local Python script.", + "type": "local", + "run_command": ["python", "data_processing/processor.py"], + "has_gui": false, + "parameters": [ + {"name": "csv_input", "label": "Input CSV:", "type": "file", "required": true, "options": {"filter": [["CSV Files", "*.csv"]]}}, + {"name": "output_folder", "label": "Output Dir:", "type": "folder", "required": true}, + {"name": "threshold", "label": "Threshold:", "type": "float", "required": false, "default": 0.5} + ] +} +``` +*(This assumes `data_processing/processor.py` exists within your `tools/` directory).* + +**Example: Git-Managed Tool** + +```json +{ + "id": "awesome_git_cli", + "display_name": "Awesome CLI (from Git)", + "description": "A command-line utility fetched from Git.", + "type": "git", + "git_url": "https://gitea.example.com/user/awesome-cli.git", + "git_ref": "v1.2.0", // Track a specific tag + "run_command": ["python", "awesome_cli/main.py"], // Command relative to cloned repo root + "has_gui": false, + "parameters_definition_file": "params_config.json" // File in awesome-cli repo root +} +``` + +### 5. Using the Dashboard + +1. **Launch the Application**. +2. **Select a Tool**: Click on a tool name in the "Available Tools" list on the left. +3. **Review & Input Parameters**: + * The tool's description and any Git status information will appear in the "Tool Options" area. + * Input fields for the tool's parameters will be shown. Fill them as required. + * Required parameters are typically indicated by the GUI (e.g., an asterisk or distinct styling, though current implementation relies on `label*`). + * For `file` or `folder` types, use the "Browse..." button. + * Last used parameters are often pre-filled. +4. **Run the Tool**: Click the "Run Tool" button. +5. **Monitor Output**: Observe `stdout` and `stderr` in the "Output Log". Messages may be color-coded or specially formatted if the tool outputs structured JSON. +6. **Manage Running Tools**: + * The "Running Tools" panel at the bottom shows active processes. + * To terminate a tool, select it in this panel and click "Terminate Selected". + +### 6. Managing Git Tools + +* **Initial Clone**: If a Git tool has not been cloned yet, selecting it in the list might show "Not Cloned". Attempting to "Update All Git Tools" or updating it via its "Configure Selected Tool..." window will trigger the clone process into the `managed_tools/` directory. +* **Checking Status**: + * When a Git tool is selected, its current Git status (relative to the configured `git_ref` on `origin`) is fetched and displayed. + * This can be manually refreshed from the tool's configuration window. +* **Updating Tools**: + * **Single Tool**: Open the "Configure Selected Tool..." dialog, optionally change the `Git Ref` field, and click "Update This Tool". + * **All Tools**: Use the "Tools" > "Update All Git Tools" menu item. This will iterate through all enabled Git tools, fetch latest changes from `origin`, and attempt to bring them to their configured `git_ref`. +* **Output during Update**: Progress messages (cloning, fetching, checking out) will appear in the "Output Log". + +### 7. Tool Configuration Window + +Accessed via "Tools" > "Configure Selected Tool..." (when a tool is selected). + +* **Editable Fields**: + * `Display Name`: Change how the tool appears in the list. + * `Description`: Modify the tool's descriptive text. + * `Enabled`: Toggle whether the tool is active and discoverable. + * `Git Ref` (for Git tools only): Change the branch, tag, or commit hash the tool should track. **Note**: The update process will try to check out this new reference. +* **Read-Only Info**: Displays other configured details like `Tool ID`, `Run Command`, `Git URL`. +* **Git Status (for Git tools)**: + * Shows detailed status (current local ref, hashes, etc.). + * `Refresh Status` button: Re-fetches from remote and updates status display. + * `Update This Tool` button: Initiates an update for this tool to its currently configured (or newly entered) `Git Ref`. +* **Saving**: Click "Save Changes" to persist modifications to `tools_registry.json`. The main tool list will refresh. + +### 8. Troubleshooting + +* **`ModuleNotFoundError: No module named 'projectutility'` (Frozen App)**: + * Ensure all necessary `__init__.py` files are present in the source package directories (`projectutility/`, `projectutility/core/`, `projectutility/gui/`). + * Check your PyInstaller `.spec` file: + * `pathex` should point to your project's root directory. + * `hiddenimports` should list `projectutility` and its submodules if not automatically detected. + * `datas` must correctly include non-Python files like local tool scripts (`tools` directory) and any default `tools_registry.json` you want to bundle. +* **Tool Not Found / "Unavailable"**: + * **Local Tools**: + * Verify `run_command` in `tools_registry.json`. + * If it's an executable (e.g., `notepad.exe`), ensure it's in your system's PATH. + * If it's a script, ensure the script path in `run_command` (e.g., `my_script_dir/script.py`) is correct *relative to the `tools/` directory* and that the `tools/` directory (with the script) is correctly bundled if running the frozen app. + * **Git Tools**: + * Ensure the `git_url` is correct and accessible. + * Check if the tool has been cloned into `managed_tools/`. If not, try updating it. + * Verify the `run_command` path is correct *relative to the root of the cloned Git repository*. + * If a `parameters_definition_file` is used, ensure its path is correct relative to the cloned repo root. +* **Git Operations Failing**: + * Ensure Git is installed and in PATH. + * Ensure `GitPython` is installed in the Python environment the dashboard is using. + * Check network connectivity to the Git remote. + * Examine messages in the "Output Log" for specific Git errors. +* **Permission Denied**: The application (or the user running it) might not have permission to execute a script or access a directory. + + + diff --git a/doc/Italian-manual.md b/doc/Italian-manual.md new file mode 100644 index 0000000..e70486a --- /dev/null +++ b/doc/Italian-manual.md @@ -0,0 +1,210 @@ +## Italiano + +### 1. Introduzione + +Benvenuto al Project Utility Dashboard! Questa applicazione è progettata per fornire un'interfaccia centralizzata e intuitiva per la gestione e l'esecuzione di una varietà di strumenti a riga di comando, script e applicazioni esterne, sia che siano memorizzati localmente sia che siano gestiti tramite repository Git. + +**Obiettivi Chiave:** + +* **Semplificare l'Esecuzione**: Avviare strumenti complessi con parametri multipli attraverso una GUI intuitiva. +* **Organizzare gli Strumenti**: Mantenere tutte le utility usate di frequente in un unico posto facilmente accessibile. +* **Gestire Strumenti Basati su Git**: Clonare, aggiornare ed eseguire facilmente strumenti direttamente da Git. +* **Migliorare il Flusso di Lavoro**: Risparmiare tempo ricordando i parametri e fornendo un'esperienza di avvio coerente. + +### 2. Installazione e Configurazione + +**(Questa sezione potrebbe richiedere personalizzazioni in base al tuo metodo di distribuzione)** + +* **Prerequisiti**: + * Python 3.8+ + * (Opzionale ma Raccomandato) Git installato e disponibile nel PATH di sistema per le funzionalità degli strumenti Git. + * (Opzionale) Libreria Python `GitPython` (`pip install GitPython`) per le funzionalità complete di integrazione Git nel dashboard. Se non presente, gli elementi UI relativi a Git saranno disabilitati o mostreranno "GitPython Mancante". +* **Esecuzione da Sorgente**: + 1. Clona il repository `ProjectUtility`. + 2. Installa le dipendenze: `pip install -r requirements.txt` (Dovrai creare questo file elencando `GitPython` se lo usi). + 3. Avvia l'applicazione: `python -m projectutility` dalla radice del repository. +* **Utilizzo di un Eseguibile PyInstaller**: + 1. Scarica o compila `ProjectUtility.exe` (o l'eseguibile specifico per la piattaforma). + 2. Posiziona l'eseguibile in una directory desiderata. + 3. Al primo avvio, potrebbe creare sottodirectory `config/`, `logs/` e `managed_tools/` accanto all'eseguibile se non esistono. + +### 3. Panoramica dell'Applicazione + +La finestra principale è suddivisa in diverse aree chiave: + +* **Barra dei Menu**: + * **Tools (Strumenti)**: + * `Update All Git Tools`: Tenta di clonare o scaricare aggiornamenti per tutti gli strumenti Git abilitati. + * `Configure Selected Tool...`: Apre una finestra di dialogo per configurare lo strumento attualmente selezionato. + * `Reload Tool List`: Rianalizza manualmente il registro degli strumenti e aggiorna l'elenco. +* **Pannello "Available Tools" (Sinistra)**: Elenca tutti gli strumenti scoperti e abilitati. Cliccando su uno strumento lo si seleziona per la configurazione e l'esecuzione. +* **Pannello "Tool Options" (In Alto a Destra, Scorrevole)**: + * Mostra `Display Name` e `Description` dello strumento selezionato. + * Mostra informazioni sullo stato Git se è uno strumento gestito tramite Git. + * Genera dinamicamente widget di input per i `Parameters` definiti per lo strumento. +* **Pannello "Output Log" (Al Centro a Destra)**: Mostra `stdout` e `stderr` degli strumenti in esecuzione, così come messaggi di stato dal dashboard stesso. +* **Area Pulsante "Run" (In Basso a Destra)**: Contiene il pulsante "Run Tool". +* **Pannello "Running Tools" (In Basso)**: Una vista ad albero che elenca tutti gli strumenti attualmente in esecuzione da parte del dashboard, mostrando il loro Run ID, Nome, Stato e PID. Permette la terminazione dei processi selezionati. + +### 4. Configurazione degli Strumenti (`tools_registry.json`) + +La flessibilità del dashboard risiede nel file `projectutility/config/tools_registry.json` (o `[AppExecutableDir]/config/tools_registry.json` per le app "frozen"). Questo file JSON contiene un array di oggetti di definizione degli strumenti. + +**Anatomia di una Voce di Strumento:** + +```json +{ + "id": "id_univoco_strumento", // Obbligatorio, stringa univoca + "display_name": "Il Mio Fantastico Strumento", // Obbligatorio, stringa mostrata nella GUI + "description": "Questo strumento fa cose fantastiche.", // Opzionale, stringa + "type": "local", // Obbligatorio: "local" o "git" + "enabled": true, // Opzionale, booleano (default: true) + "run_command": ["python", "scripts/mio_script.py"], // Obbligatorio, lista di stringhe + "has_gui": false, // Obbligatorio, booleano (lo strumento ha una sua GUI?) + "version": "1.0.1", // Opzionale, stringa + // --- Per type: "local" --- + "parameters": [ // Opzionale, lista di oggetti parametro + { + "name": "file_input", + "label": "File di Input:", + "type": "file", // es. string, integer, float, boolean, file, folder + "required": true, + "default": "default.txt", // Valore di default opzionale + "description": "Percorso al file di dati di input.", // Tooltip opzionale + "options": {"filter": [["File di Testo", "*.txt"], ["Tutti i File", "*.*"]]} // Opzionale, specifico per tipo + } + ], + // --- Per type: "git" --- + "git_url": "https://gitea.example.com/utente/mio_strumento_git.git", // Richiesto per "git" + "git_ref": "main", // Opzionale, default "main" (branch, tag, o commit) + "local_dir_name": "mio_clone_strumento_git", // Opzionale, nome directory in managed_tools/ + "parameters_definition_file": "tool_params.json" // Opzionale, percorso a file JSON nella root del repo +} +``` + +**Spiegazione dei Campi Chiave:** + +* `id`: Deve essere univoco per tutti gli strumenti. +* `type`: + * `local`: Per eseguibili nel PATH o script nella directory `tools/` dell'applicazione. + * Directory `tools/` (per script): + * Se eseguito da sorgente: `[RepoRoot]/tools/` + * Se eseguito come eseguibile: `[AppExecutableDir]/_internal/tools/` (impacchettato da PyInstaller) + * `git`: Per strumenti clonati e gestiti da un repository Git. Saranno clonati in `managed_tools/`. +* `run_command`: + * Il primo elemento è solitamente l'eseguibile (es. `python`, `powershell.exe`, `mia_app.exe`). + * Gli elementi successivi sono argomenti. + * Per script locali in `tools/`, usare percorsi relativi a `tools/`, es. `["python", "mia_sottodir_strumento/main.py"]`. Il dashboard risolve questo in un percorso assoluto. +* `parameters`: Un array di oggetti, ognuno dei quali definisce un parametro di input per la GUI. + * `name`: Chiave interna per il parametro. + * `label`: Testo mostrato accanto al campo di input. + * `type`: Determina il widget: `string`, `integer`, `float`, `boolean`, `file` (seleziona file), `folder` (seleziona directory). + * `required`: `true` o `false`. + * `default`: Un valore di default. + * `description`: Testo del tooltip. + * `options`: Configurazioni specifiche per tipo. Per `file`: `{"filter": [["Descrizione", "*.ext"]], "save_as": false}`. +* `parameters_definition_file` (per strumenti `git`): Se specificato, è un percorso *relativo alla radice del repository Git clonato* a un file JSON. Questo file JSON deve avere un oggetto radice con una chiave `"parameters"` che è un array di oggetti parametro (stesso formato dei `parameters` inline). +* `local_dir_name` (per strumenti `git`): Se omesso, viene usato l'`id` come nome della directory all'interno di `managed_tools/`. + +**Esempio: Script Python Locale** + +```json +{ + "id": "mio_script_locale", + "display_name": "Mio Elaboratore Dati", + "description": "Elabora dati CSV usando uno script Python locale.", + "type": "local", + "run_command": ["python", "elaborazione_dati/processor.py"], + "has_gui": false, + "parameters": [ + {"name": "csv_input", "label": "CSV di Input:", "type": "file", "required": true, "options": {"filter": [["File CSV", "*.csv"]]}}, + {"name": "cartella_output", "label": "Dir Output:", "type": "folder", "required": true}, + {"name": "soglia", "label": "Soglia:", "type": "float", "required": false, "default": 0.5} + ] +} +``` +*(Questo presume che `elaborazione_dati/processor.py` esista nella tua directory `tools/`).* + +**Esempio: Strumento Gestito da Git** + +```json +{ + "id": "fantastica_cli_git", + "display_name": "Fantastica CLI (da Git)", + "description": "Un'utility a riga di comando recuperata da Git.", + "type": "git", + "git_url": "https://gitea.example.com/utente/fantastica-cli.git", + "git_ref": "v1.2.0", // Traccia un tag specifico + "run_command": ["python", "fantastica_cli/main.py"], // Comando relativo alla root del repo clonato + "has_gui": false, + "parameters_definition_file": "params_config.json" // File nella root del repo fantastica-cli +} +``` + +### 5. Utilizzo del Dashboard + +1. **Avvia l'Applicazione**. +2. **Seleziona uno Strumento**: Clicca sul nome di uno strumento nell'elenco "Available Tools" a sinistra. +3. **Rivedi e Inserisci i Parametri**: + * La descrizione dello strumento ed eventuali informazioni sullo stato Git appariranno nell'area "Tool Options". + * Verranno mostrati i campi di input per i parametri dello strumento. Compilali come richiesto. + * I parametri obbligatori sono tipicamente indicati dalla GUI (es. un asterisco o uno stile distinto, anche se l'implementazione attuale si basa su `label*`). + * Per tipi `file` o `folder`, usa il pulsante "Browse...". + * Gli ultimi parametri utilizzati sono spesso precompilati. +4. **Avvia lo Strumento**: Clicca il pulsante "Run Tool". +5. **Monitora l'Output**: Osserva `stdout` e `stderr` nell'"Output Log". I messaggi possono essere colorati o formattati specialmente se lo strumento emette JSON strutturato. +6. **Gestisci gli Strumenti in Esecuzione**: + * Il pannello "Running Tools" in basso mostra i processi attivi. + * Per terminare uno strumento, selezionalo in questo pannello e clicca "Terminate Selected". + +### 6. Gestione degli Strumenti Git + +* **Clonazione Iniziale**: Se uno strumento Git non è ancora stato clonato, selezionandolo nell'elenco potrebbe mostrare "Not Cloned". Tentare di "Aggiornare Tutti gli Strumenti Git" o aggiornarlo tramite la sua finestra "Configura Strumento Selezionato..." attiverà il processo di clonazione nella directory `managed_tools/`. +* **Controllo dello Stato**: + * Quando si seleziona uno strumento Git, il suo stato Git attuale (relativo al `git_ref` configurato su `origin`) viene recuperato e visualizzato. + * Questo può essere aggiornato manualmente dalla finestra di configurazione dello strumento. +* **Aggiornamento degli Strumenti**: + * **Singolo Strumento**: Apri la finestra di dialogo "Configura Strumento Selezionato...", opzionalmente cambia il campo `Git Ref`, e clicca "Update This Tool". + * **Tutti gli Strumenti**: Usa la voce di menu "Tools" > "Update All Git Tools". Questo itererà su tutti gli strumenti Git abilitati, recupererà le ultime modifiche da `origin` e tenterà di portarli al loro `git_ref` configurato. +* **Output durante l'Aggiornamento**: I messaggi di avanzamento (clonazione, fetch, checkout) appariranno nell'"Output Log". + +### 7. Finestra di Configurazione Strumento + +Accessibile tramite "Tools" > "Configure Selected Tool..." (quando uno strumento è selezionato). + +* **Campi Modificabili**: + * `Display Name`: Cambia come lo strumento appare nell'elenco. + * `Description`: Modifica il testo descrittivo dello strumento. + * `Enabled`: Attiva/disattiva se lo strumento è attivo e scopribile. + * `Git Ref` (solo per strumenti Git): Cambia il branch, tag o hash di commit che lo strumento deve tracciare. **Nota**: Il processo di aggiornamento tenterà di fare il checkout di questo nuovo riferimento. +* **Info di Sola Lettura**: Mostra altri dettagli configurati come `Tool ID`, `Run Command`, `Git URL`. +* **Stato Git (per strumenti Git)**: + * Mostra lo stato dettagliato (riferimento locale corrente, hash, ecc.). + * Pulsante `Refresh Status`: Ri-effettua il fetch dal remoto e aggiorna la visualizzazione dello stato. + * Pulsante `Update This Tool`: Avvia un aggiornamento per questo strumento al suo `Git Ref` attualmente configurato (o appena inserito). +* **Salvataggio**: Clicca "Save Changes" per rendere persistenti le modifiche a `tools_registry.json`. L'elenco principale degli strumenti si aggiornerà. + +### 8. Risoluzione dei Problemi + +* **`ModuleNotFoundError: No module named 'projectutility'` (App "Frozen")**: + * Assicurati che tutti i file `__init__.py` necessari siano presenti nelle directory del pacchetto sorgente (`projectutility/`, `projectutility/core/`, `projectutility/gui/`). + * Controlla il tuo file `.spec` di PyInstaller: + * `pathex` dovrebbe puntare alla directory radice del tuo progetto. + * `hiddenimports` dovrebbe elencare `projectutility` e i suoi sottomoduli se non rilevati automaticamente. + * `datas` deve includere correttamente i file non Python come gli script degli strumenti locali (directory `tools`) ed eventuale `tools_registry.json` di default che vuoi impacchettare. +* **Strumento Non Trovato / "Non Disponibile"**: + * **Strumenti Locali**: + * Verifica `run_command` in `tools_registry.json`. + * Se è un eseguibile (es. `notepad.exe`), assicurati che sia nel PATH di sistema. + * Se è uno script, assicurati che il percorso dello script in `run_command` (es. `mia_dir_script/script.py`) sia corretto *relativamente alla directory `tools/`* e che la directory `tools/` (con lo script) sia correttamente impacchettata se si esegue l'app "frozen". + * **Strumenti Git**: + * Assicurati che `git_url` sia corretto e accessibile. + * Controlla se lo strumento è stato clonato in `managed_tools/`. In caso contrario, prova ad aggiornarlo. + * Verifica che il percorso `run_command` sia corretto *relativamente alla radice del repository Git clonato*. + * Se viene utilizzato un `parameters_definition_file`, assicurati che il suo percorso sia corretto relativamente alla radice del repo clonato. +* **Operazioni Git Fallite**: + * Assicurati che Git sia installato e nel PATH. + * Assicurati che `GitPython` sia installato nell'ambiente Python che il dashboard sta usando. + * Controlla la connettività di rete al remote Git. + * Esamina i messaggi nell'"Output Log" per errori Git specifici. +* **Permesso Negato**: L'applicazione (o l'utente che la esegue) potrebbe non avere il permesso di eseguire uno script o accedere a una directory. \ No newline at end of file diff --git a/projectutility/config/tool_state.json b/projectutility/config/tool_state.json index 569a1d4..200d5e1 100644 --- a/projectutility/config/tool_state.json +++ b/projectutility/config/tool_state.json @@ -23,5 +23,7 @@ "remove_bg": true }, "pyinstaller_gui_git": {}, - "geoelevation_git": {} + "geoelevation_git": {}, + "dependencyanalizer_git": {}, + "dependencyanalyzer_git": {} } \ No newline at end of file diff --git a/projectutility/config/tools_registry.json b/projectutility/config/tools_registry.json index 70d368f..9739cbc 100644 --- a/projectutility/config/tools_registry.json +++ b/projectutility/config/tools_registry.json @@ -35,6 +35,18 @@ "has_gui": true, "parameters_definition_file": null }, + { + "id": "dependencyanalyzer_git", + "display_name": "Dependency Analyzer (Git)", + "description": "Manag. requirements from python project, fetched via Git.", + "type": "git", + "enabled": true, + "git_url": "http://172.17.23.250:3000/vallongol/DependencyAnalyzer", + "git_ref": "master", + "run_command": ["python", "-m", "dependencyanalyzer"], + "has_gui": true, + "parameters_definition_file": null + }, { "id": "dummy_script", "display_name": "Dummy Script Runner (Local)", diff --git a/projectutility/logs/project_utility.log b/projectutility/logs/project_utility.log index 430ba08..31f28bc 100644 --- a/projectutility/logs/project_utility.log +++ b/projectutility/logs/project_utility.log @@ -4494,3 +4494,354 @@ Aborting' 2025-05-06 10:17:12 - projectutility.gui.main_window - INFO - Window close requested by user. 2025-05-06 10:17:12 - projectutility.gui.main_window - INFO - No running tasks detected. Closing application window. 2025-05-06 10:17:12 - root - INFO - ProjectUtility application finished. +2025-05-06 14:37:50 - __main__ - INFO - -------------------------------------------------- +2025-05-06 14:37:50 - __main__ - INFO - Logging configured. Level: INFO. File: Enabled ('C:\src\____GitProjects\ProjectUtility\projectutility\logs\project_utility.log') +2025-05-06 14:37:50 - __main__ - INFO - Running Mode: SCRIPT +2025-05-06 14:37:50 - __main__ - INFO - Base Directory (REPO_ROOT): C:\src\____GitProjects\ProjectUtility +2025-05-06 14:37:50 - root - INFO - Starting ProjectUtility application... +2025-05-06 14:37:50 - root - INFO - Repo Root (Base Path): C:\src\____GitProjects\ProjectUtility +2025-05-06 14:37:50 - root - INFO - Config Directory: C:\src\____GitProjects\ProjectUtility\projectutility\config +2025-05-06 14:37:50 - root - INFO - Logs Directory: C:\src\____GitProjects\ProjectUtility\projectutility\logs +2025-05-06 14:37:50 - root - INFO - Local Tools Directory: C:\src\____GitProjects\ProjectUtility\tools +2025-05-06 14:37:50 - root - INFO - Managed Tools Directory: C:\src\____GitProjects\ProjectUtility\managed_tools +2025-05-06 14:37:50 - projectutility.gui.main_window - INFO - Successfully loaded tool state from C:\src\____GitProjects\ProjectUtility\projectutility\config\tool_state.json +2025-05-06 14:37:50 - projectutility.gui.main_window - INFO - Using ttk theme: clam +2025-05-06 14:37:50 - projectutility.gui.main_window - INFO - Reloading available tools... +2025-05-06 14:37:50 - projectutility.core.tool_discovery - INFO - Starting tool discovery process based on the registry... +2025-05-06 14:37:50 - projectutility.core.registry_manager - INFO - Successfully read registry file: C:\src\____GitProjects\ProjectUtility\projectutility\config\tools_registry.json +2025-05-06 14:37:50 - projectutility.core.registry_manager - INFO - Loaded 6 valid tool entries from the registry. +2025-05-06 14:37:50 - projectutility.core.tool_discovery - INFO - Successfully loaded parameter definitions from: C:\src\____GitProjects\ProjectUtility\managed_tools\icon_generator_git\tool_config_params.json +2025-05-06 14:37:50 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Icon Generator (Git)' (ID: icon_generator_git, Type: git) +2025-05-06 14:37:50 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'PyInstaller GUI (Git)' (ID: pyinstaller_gui_git, Type: git) +2025-05-06 14:37:50 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Geo Elevation (Git)' (ID: geoelevation_git, Type: git) +2025-05-06 14:37:50 - projectutility.core.tool_discovery - WARNING - Git tool 'dependencyanalizer_git': Expected repository directory not found at 'C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalizer_git'. Tool needs cloning/update. Marked as unavailable. +2025-05-06 14:37:50 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Dummy Script Runner (Local)' (ID: dummy_script, Type: local) +2025-05-06 14:37:50 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Blocco Note (Notepad - Local)' (ID: notepad, Type: local) +2025-05-06 14:37:50 - projectutility.core.tool_discovery - INFO - Tool discovery finished. Found 5 enabled/available tools. +2025-05-06 14:37:50 - projectutility.gui.main_window - INFO - Finished loading 5 tools into the listbox. +2025-05-06 14:37:50 - projectutility.gui.main_window - INFO - MainWindow initialized and UI displayed. +2025-05-06 14:37:50 - projectutility.gui.main_window - INFO - Tool Discovery: Enabled +2025-05-06 14:37:50 - projectutility.gui.main_window - INFO - Process Execution: Enabled +2025-05-06 14:37:50 - projectutility.gui.main_window - INFO - Git Features: Enabled +2025-05-06 14:37:50 - projectutility.gui.main_window - INFO - Config Window: Enabled +2025-05-06 14:37:50 - root - INFO - Main application window initialized. +2025-05-06 14:37:50 - root - INFO - Starting Tkinter main event loop. +2025-05-06 14:37:53 - projectutility.gui.main_window - INFO - User requested 'Update All Git Tools'. +2025-05-06 14:37:53 - projectutility.gui.main_window - INFO - Starting threaded batch update for all enabled Git tools... +2025-05-06 14:37:53 - projectutility.core.registry_manager - INFO - Successfully read registry file: C:\src\____GitProjects\ProjectUtility\projectutility\config\tools_registry.json +2025-05-06 14:37:53 - projectutility.core.registry_manager - INFO - Loaded 6 valid tool entries from the registry. +2025-05-06 14:37:53 - projectutility.gui.main_window - INFO - Found 4 enabled Git tools to process. +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [icon_generator_git] Starting repo update... +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [icon_generator_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [icon_generator_git] Fetch operation completed successfully. +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [icon_generator_git] Checking out target ref: 'master' +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [icon_generator_git] Already at target commit for 'master'. Checking out to ensure correct state. +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [icon_generator_git] Checked out 'master'. +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [icon_generator_git] On branch 'master'. Attempting ff-only pull... +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [icon_generator_git] FF-only pull successful for 'master'. +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Starting repo update... +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:37:53 - projectutility.gui.main_window - INFO - Git single result for 'icon_generator_git': Success=True, Msg=Repo updated. On branch 'master' tracking 'master'. +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Fetch operation completed successfully. +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Checking out target ref: 'master' +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Already at target commit for 'master'. Checking out to ensure correct state. +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Checked out 'master'. +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] On branch 'master'. Attempting ff-only pull... +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] FF-only pull successful for 'master'. +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [geoelevation_git] Starting repo update... +2025-05-06 14:37:53 - projectutility.core.git_manager - INFO - [geoelevation_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:37:53 - projectutility.gui.main_window - INFO - Git single result for 'pyinstaller_gui_git': Success=True, Msg=Repo updated. On branch 'master' tracking 'master'. +2025-05-06 14:37:54 - projectutility.core.git_manager - INFO - [geoelevation_git] Fetch operation completed successfully. +2025-05-06 14:37:54 - projectutility.core.git_manager - INFO - [geoelevation_git] Checking out target ref: 'master' +2025-05-06 14:37:54 - projectutility.core.git_manager - INFO - [geoelevation_git] Already at target commit for 'master'. Checking out to ensure correct state. +2025-05-06 14:37:54 - projectutility.core.git_manager - INFO - [geoelevation_git] Checked out 'master'. +2025-05-06 14:37:54 - projectutility.core.git_manager - INFO - [geoelevation_git] On branch 'master'. Attempting ff-only pull... +2025-05-06 14:37:54 - projectutility.core.git_manager - INFO - [geoelevation_git] FF-only pull successful for 'master'. +2025-05-06 14:37:54 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] Starting repo update... +2025-05-06 14:37:54 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] Repository not found. Cloning from 'http://172.17.23.250:3000/vallongol/GeoElevation' into 'C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalizer_git'... +2025-05-06 14:37:54 - projectutility.gui.main_window - INFO - Git single result for 'geoelevation_git': Success=True, Msg=Repo updated. On branch 'master' tracking 'master'. +2025-05-06 14:38:16 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] Repository cloned successfully to C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalizer_git. +2025-05-06 14:38:16 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:38:17 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] Fetch operation completed successfully. +2025-05-06 14:38:17 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] Checking out target ref: 'master' +2025-05-06 14:38:17 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] Already at target commit for 'master'. Checking out to ensure correct state. +2025-05-06 14:38:17 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] Checked out 'master'. +2025-05-06 14:38:17 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] On branch 'master'. Attempting ff-only pull... +2025-05-06 14:38:17 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] FF-only pull successful for 'master'. +2025-05-06 14:38:17 - projectutility.gui.main_window - INFO - Batch update loop finished. Success: 4, Errors: 0 +2025-05-06 14:38:17 - projectutility.gui.main_window - INFO - Git single result for 'dependencyanalizer_git': Success=True, Msg=Repo updated. On branch 'master' tracking 'master'. +2025-05-06 14:38:17 - projectutility.gui.main_window - INFO - Received Git 'all finished' signal. +2025-05-06 14:38:17 - projectutility.gui.main_window - INFO - Finished batch Git update. Succeeded: 4, Failed: 0. +2025-05-06 14:38:19 - projectutility.gui.main_window - INFO - Reloading tool list after Git batch update. +2025-05-06 14:38:19 - projectutility.gui.main_window - INFO - Reloading available tools... +2025-05-06 14:38:19 - projectutility.core.tool_discovery - INFO - Starting tool discovery process based on the registry... +2025-05-06 14:38:19 - projectutility.core.registry_manager - INFO - Successfully read registry file: C:\src\____GitProjects\ProjectUtility\projectutility\config\tools_registry.json +2025-05-06 14:38:19 - projectutility.core.registry_manager - INFO - Loaded 6 valid tool entries from the registry. +2025-05-06 14:38:19 - projectutility.core.tool_discovery - INFO - Successfully loaded parameter definitions from: C:\src\____GitProjects\ProjectUtility\managed_tools\icon_generator_git\tool_config_params.json +2025-05-06 14:38:19 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Icon Generator (Git)' (ID: icon_generator_git, Type: git) +2025-05-06 14:38:19 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'PyInstaller GUI (Git)' (ID: pyinstaller_gui_git, Type: git) +2025-05-06 14:38:19 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Geo Elevation (Git)' (ID: geoelevation_git, Type: git) +2025-05-06 14:38:19 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Dependency Analyzer (Git)' (ID: dependencyanalizer_git, Type: git) +2025-05-06 14:38:19 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Dummy Script Runner (Local)' (ID: dummy_script, Type: local) +2025-05-06 14:38:19 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Blocco Note (Notepad - Local)' (ID: notepad, Type: local) +2025-05-06 14:38:19 - projectutility.core.tool_discovery - INFO - Tool discovery finished. Found 6 enabled/available tools. +2025-05-06 14:38:19 - projectutility.gui.main_window - INFO - Finished loading 6 tools into the listbox. +2025-05-06 14:38:23 - projectutility.gui.main_window - INFO - Tool selected: ID='dependencyanalizer_git' +2025-05-06 14:38:23 - projectutility.core.registry_manager - INFO - Successfully read registry file: C:\src\____GitProjects\ProjectUtility\projectutility\config\tools_registry.json +2025-05-06 14:38:23 - projectutility.core.registry_manager - INFO - Loaded 6 valid tool entries from the registry. +2025-05-06 14:38:23 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] Checking repo status: C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalizer_git... +2025-05-06 14:38:23 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:38:23 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] Fetch operation completed successfully. +2025-05-06 14:38:23 - projectutility.core.git_manager - INFO - [dependencyanalizer_git] Status: Up-to-date +2025-05-06 14:38:25 - projectutility.gui.main_window - INFO - Preparing to launch tool: 'Dependency Analyzer (Git)' (ID: dependencyanalizer_git) +2025-05-06 14:38:25 - projectutility.gui.main_window - INFO - Saving state for tool 'dependencyanalizer_git' with parameters: {} +2025-05-06 14:38:25 - projectutility.gui.main_window - INFO - Generated unique Run ID: dependencyanalizer_git_05e95af2 +2025-05-06 14:38:25 - projectutility.gui.process_worker.dependencyanalizer_git_05e95af2 - INFO - Initializing worker for tool: 'Dependency Analyzer (Git)' +2025-05-06 14:38:25 - projectutility.gui.process_worker.dependencyanalizer_git_05e95af2 - INFO - Worker run method started. Preparing to execute command. +2025-05-06 14:38:25 - projectutility.gui.main_window - INFO - ProcessWorker thread started for Run ID: dependencyanalizer_git_05e95af2 +2025-05-06 14:38:25 - projectutility.gui.process_worker.dependencyanalizer_git_05e95af2 - INFO - Final command list constructed: ['python', '-m', 'depencencyanalizer'] +2025-05-06 14:38:25 - projectutility.gui.process_worker.dependencyanalizer_git_05e95af2 - INFO - Executing command: python -m depencencyanalizer +2025-05-06 14:38:25 - projectutility.gui.process_worker.dependencyanalizer_git_05e95af2 - INFO - Working Directory: C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalizer_git +2025-05-06 14:38:25 - projectutility.gui.process_worker.dependencyanalizer_git_05e95af2 - INFO - Subprocess started successfully with PID: 3048 +2025-05-06 14:38:25 - projectutility.gui.main_window - WARNING - Stderr from dependencyanalizer_git_05e95af2: No module named depencencyanalizer +2025-05-06 14:38:25 - projectutility.gui.process_worker.dependencyanalizer_git_05e95af2 - INFO - Subprocess (PID: 3048) finished with exit code: 0 +2025-05-06 14:38:25 - projectutility.gui.process_worker.dependencyanalizer_git_05e95af2 - INFO - Worker thread completed for run_id: dependencyanalizer_git_05e95af2. Final exit code reported to queue: 0 +2025-05-06 14:38:26 - projectutility.gui.main_window - INFO - Worker finished message received for dependencyanalizer_git_05e95af2. Exit Code: 0 +2025-05-06 14:39:49 - projectutility.gui.main_window - INFO - Window close requested by user. +2025-05-06 14:39:49 - projectutility.gui.main_window - INFO - No running tasks detected. Closing application window. +2025-05-06 14:39:49 - root - INFO - ProjectUtility application finished. +2025-05-06 14:39:49 - git.cmd - INFO - Ignored error after process had died: OSError(9, 'Handle non valido', None, 6, None) +2025-05-06 14:39:49 - git.cmd - INFO - Ignored error after process had died: OSError(9, 'Handle non valido', None, 6, None) +2025-05-06 14:40:06 - __main__ - INFO - -------------------------------------------------- +2025-05-06 14:40:06 - __main__ - INFO - Logging configured. Level: INFO. File: Enabled ('C:\src\____GitProjects\ProjectUtility\projectutility\logs\project_utility.log') +2025-05-06 14:40:06 - __main__ - INFO - Running Mode: SCRIPT +2025-05-06 14:40:06 - __main__ - INFO - Base Directory (REPO_ROOT): C:\src\____GitProjects\ProjectUtility +2025-05-06 14:40:06 - root - INFO - Starting ProjectUtility application... +2025-05-06 14:40:06 - root - INFO - Repo Root (Base Path): C:\src\____GitProjects\ProjectUtility +2025-05-06 14:40:06 - root - INFO - Config Directory: C:\src\____GitProjects\ProjectUtility\projectutility\config +2025-05-06 14:40:06 - root - INFO - Logs Directory: C:\src\____GitProjects\ProjectUtility\projectutility\logs +2025-05-06 14:40:06 - root - INFO - Local Tools Directory: C:\src\____GitProjects\ProjectUtility\tools +2025-05-06 14:40:06 - root - INFO - Managed Tools Directory: C:\src\____GitProjects\ProjectUtility\managed_tools +2025-05-06 14:40:06 - projectutility.gui.main_window - INFO - Successfully loaded tool state from C:\src\____GitProjects\ProjectUtility\projectutility\config\tool_state.json +2025-05-06 14:40:06 - projectutility.gui.main_window - INFO - Using ttk theme: clam +2025-05-06 14:40:06 - projectutility.gui.main_window - INFO - Reloading available tools... +2025-05-06 14:40:06 - projectutility.core.tool_discovery - INFO - Starting tool discovery process based on the registry... +2025-05-06 14:40:06 - projectutility.core.registry_manager - INFO - Successfully read registry file: C:\src\____GitProjects\ProjectUtility\projectutility\config\tools_registry.json +2025-05-06 14:40:06 - projectutility.core.registry_manager - INFO - Loaded 6 valid tool entries from the registry. +2025-05-06 14:40:06 - projectutility.core.tool_discovery - INFO - Successfully loaded parameter definitions from: C:\src\____GitProjects\ProjectUtility\managed_tools\icon_generator_git\tool_config_params.json +2025-05-06 14:40:06 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Icon Generator (Git)' (ID: icon_generator_git, Type: git) +2025-05-06 14:40:06 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'PyInstaller GUI (Git)' (ID: pyinstaller_gui_git, Type: git) +2025-05-06 14:40:06 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Geo Elevation (Git)' (ID: geoelevation_git, Type: git) +2025-05-06 14:40:06 - projectutility.core.tool_discovery - WARNING - Git tool 'dependencyanalyzer_git': Expected repository directory not found at 'C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalyzer_git'. Tool needs cloning/update. Marked as unavailable. +2025-05-06 14:40:06 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Dummy Script Runner (Local)' (ID: dummy_script, Type: local) +2025-05-06 14:40:06 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Blocco Note (Notepad - Local)' (ID: notepad, Type: local) +2025-05-06 14:40:06 - projectutility.core.tool_discovery - INFO - Tool discovery finished. Found 5 enabled/available tools. +2025-05-06 14:40:06 - projectutility.gui.main_window - INFO - Finished loading 5 tools into the listbox. +2025-05-06 14:40:06 - projectutility.gui.main_window - INFO - MainWindow initialized and UI displayed. +2025-05-06 14:40:06 - projectutility.gui.main_window - INFO - Tool Discovery: Enabled +2025-05-06 14:40:06 - projectutility.gui.main_window - INFO - Process Execution: Enabled +2025-05-06 14:40:06 - projectutility.gui.main_window - INFO - Git Features: Enabled +2025-05-06 14:40:06 - projectutility.gui.main_window - INFO - Config Window: Enabled +2025-05-06 14:40:06 - root - INFO - Main application window initialized. +2025-05-06 14:40:06 - root - INFO - Starting Tkinter main event loop. +2025-05-06 14:40:14 - projectutility.gui.main_window - INFO - User requested 'Update All Git Tools'. +2025-05-06 14:40:14 - projectutility.gui.main_window - INFO - Starting threaded batch update for all enabled Git tools... +2025-05-06 14:40:14 - projectutility.core.registry_manager - INFO - Successfully read registry file: C:\src\____GitProjects\ProjectUtility\projectutility\config\tools_registry.json +2025-05-06 14:40:14 - projectutility.core.registry_manager - INFO - Loaded 6 valid tool entries from the registry. +2025-05-06 14:40:14 - projectutility.gui.main_window - INFO - Found 4 enabled Git tools to process. +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [icon_generator_git] Starting repo update... +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [icon_generator_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [icon_generator_git] Fetch operation completed successfully. +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [icon_generator_git] Checking out target ref: 'master' +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [icon_generator_git] Already at target commit for 'master'. Checking out to ensure correct state. +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [icon_generator_git] Checked out 'master'. +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [icon_generator_git] On branch 'master'. Attempting ff-only pull... +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [icon_generator_git] FF-only pull successful for 'master'. +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Starting repo update... +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:40:14 - projectutility.gui.main_window - INFO - Git single result for 'icon_generator_git': Success=True, Msg=Repo updated. On branch 'master' tracking 'master'. +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Fetch operation completed successfully. +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Checking out target ref: 'master' +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Already at target commit for 'master'. Checking out to ensure correct state. +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Checked out 'master'. +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] On branch 'master'. Attempting ff-only pull... +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] FF-only pull successful for 'master'. +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [geoelevation_git] Starting repo update... +2025-05-06 14:40:14 - projectutility.core.git_manager - INFO - [geoelevation_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:40:15 - projectutility.gui.main_window - INFO - Git single result for 'pyinstaller_gui_git': Success=True, Msg=Repo updated. On branch 'master' tracking 'master'. +2025-05-06 14:40:15 - projectutility.core.git_manager - INFO - [geoelevation_git] Fetch operation completed successfully. +2025-05-06 14:40:15 - projectutility.core.git_manager - INFO - [geoelevation_git] Checking out target ref: 'master' +2025-05-06 14:40:15 - projectutility.core.git_manager - INFO - [geoelevation_git] Already at target commit for 'master'. Checking out to ensure correct state. +2025-05-06 14:40:15 - projectutility.core.git_manager - INFO - [geoelevation_git] Checked out 'master'. +2025-05-06 14:40:15 - projectutility.core.git_manager - INFO - [geoelevation_git] On branch 'master'. Attempting ff-only pull... +2025-05-06 14:40:15 - projectutility.core.git_manager - INFO - [geoelevation_git] FF-only pull successful for 'master'. +2025-05-06 14:40:15 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Starting repo update... +2025-05-06 14:40:15 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Repository not found. Cloning from 'http://172.17.23.250:3000/vallongol/GeoElevation' into 'C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalyzer_git'... +2025-05-06 14:40:15 - projectutility.gui.main_window - INFO - Git single result for 'geoelevation_git': Success=True, Msg=Repo updated. On branch 'master' tracking 'master'. +2025-05-06 14:40:38 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Repository cloned successfully to C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalyzer_git. +2025-05-06 14:40:38 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:40:38 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Fetch operation completed successfully. +2025-05-06 14:40:38 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Checking out target ref: 'master' +2025-05-06 14:40:38 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Already at target commit for 'master'. Checking out to ensure correct state. +2025-05-06 14:40:38 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Checked out 'master'. +2025-05-06 14:40:38 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] On branch 'master'. Attempting ff-only pull... +2025-05-06 14:40:38 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] FF-only pull successful for 'master'. +2025-05-06 14:40:38 - projectutility.gui.main_window - INFO - Batch update loop finished. Success: 4, Errors: 0 +2025-05-06 14:40:38 - projectutility.gui.main_window - INFO - Git single result for 'dependencyanalyzer_git': Success=True, Msg=Repo updated. On branch 'master' tracking 'master'. +2025-05-06 14:40:38 - projectutility.gui.main_window - INFO - Received Git 'all finished' signal. +2025-05-06 14:40:38 - projectutility.gui.main_window - INFO - Finished batch Git update. Succeeded: 4, Failed: 0. +2025-05-06 14:40:40 - projectutility.gui.main_window - INFO - Reloading tool list after Git batch update. +2025-05-06 14:40:40 - projectutility.gui.main_window - INFO - Reloading available tools... +2025-05-06 14:40:40 - projectutility.core.tool_discovery - INFO - Starting tool discovery process based on the registry... +2025-05-06 14:40:40 - projectutility.core.registry_manager - INFO - Successfully read registry file: C:\src\____GitProjects\ProjectUtility\projectutility\config\tools_registry.json +2025-05-06 14:40:40 - projectutility.core.registry_manager - INFO - Loaded 6 valid tool entries from the registry. +2025-05-06 14:40:40 - projectutility.core.tool_discovery - INFO - Successfully loaded parameter definitions from: C:\src\____GitProjects\ProjectUtility\managed_tools\icon_generator_git\tool_config_params.json +2025-05-06 14:40:40 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Icon Generator (Git)' (ID: icon_generator_git, Type: git) +2025-05-06 14:40:40 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'PyInstaller GUI (Git)' (ID: pyinstaller_gui_git, Type: git) +2025-05-06 14:40:40 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Geo Elevation (Git)' (ID: geoelevation_git, Type: git) +2025-05-06 14:40:40 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Dependency Analyzer (Git)' (ID: dependencyanalyzer_git, Type: git) +2025-05-06 14:40:40 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Dummy Script Runner (Local)' (ID: dummy_script, Type: local) +2025-05-06 14:40:40 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Blocco Note (Notepad - Local)' (ID: notepad, Type: local) +2025-05-06 14:40:40 - projectutility.core.tool_discovery - INFO - Tool discovery finished. Found 6 enabled/available tools. +2025-05-06 14:40:40 - projectutility.gui.main_window - INFO - Finished loading 6 tools into the listbox. +2025-05-06 14:40:42 - projectutility.gui.main_window - INFO - Tool selected: ID='dependencyanalyzer_git' +2025-05-06 14:40:42 - projectutility.core.registry_manager - INFO - Successfully read registry file: C:\src\____GitProjects\ProjectUtility\projectutility\config\tools_registry.json +2025-05-06 14:40:42 - projectutility.core.registry_manager - INFO - Loaded 6 valid tool entries from the registry. +2025-05-06 14:40:42 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Checking repo status: C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalyzer_git... +2025-05-06 14:40:42 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:40:42 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Fetch operation completed successfully. +2025-05-06 14:40:42 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Status: Up-to-date +2025-05-06 14:40:43 - projectutility.gui.main_window - INFO - Preparing to launch tool: 'Dependency Analyzer (Git)' (ID: dependencyanalyzer_git) +2025-05-06 14:40:43 - projectutility.gui.main_window - INFO - Saving state for tool 'dependencyanalyzer_git' with parameters: {} +2025-05-06 14:40:43 - projectutility.gui.main_window - INFO - Generated unique Run ID: dependencyanalyzer_git_f3a5fbaf +2025-05-06 14:40:43 - projectutility.gui.process_worker.dependencyanalyzer_git_f3a5fbaf - INFO - Initializing worker for tool: 'Dependency Analyzer (Git)' +2025-05-06 14:40:43 - projectutility.gui.process_worker.dependencyanalyzer_git_f3a5fbaf - INFO - Worker run method started. Preparing to execute command. +2025-05-06 14:40:43 - projectutility.gui.main_window - INFO - ProcessWorker thread started for Run ID: dependencyanalyzer_git_f3a5fbaf +2025-05-06 14:40:43 - projectutility.gui.process_worker.dependencyanalyzer_git_f3a5fbaf - INFO - Final command list constructed: ['python', '-m', 'dependencyanalyzer'] +2025-05-06 14:40:43 - projectutility.gui.process_worker.dependencyanalyzer_git_f3a5fbaf - INFO - Executing command: python -m dependencyanalyzer +2025-05-06 14:40:43 - projectutility.gui.process_worker.dependencyanalyzer_git_f3a5fbaf - INFO - Working Directory: C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalyzer_git +2025-05-06 14:40:43 - projectutility.gui.process_worker.dependencyanalyzer_git_f3a5fbaf - INFO - Subprocess started successfully with PID: 15224 +2025-05-06 14:40:43 - projectutility.gui.main_window - WARNING - Stderr from dependencyanalyzer_git_f3a5fbaf: No module named dependencyanalyzer +2025-05-06 14:40:44 - projectutility.gui.process_worker.dependencyanalyzer_git_f3a5fbaf - INFO - Subprocess (PID: 15224) finished with exit code: 0 +2025-05-06 14:40:44 - projectutility.gui.process_worker.dependencyanalyzer_git_f3a5fbaf - INFO - Worker thread completed for run_id: dependencyanalyzer_git_f3a5fbaf. Final exit code reported to queue: 0 +2025-05-06 14:40:44 - projectutility.gui.main_window - INFO - Worker finished message received for dependencyanalyzer_git_f3a5fbaf. Exit Code: 0 +2025-05-06 14:42:30 - __main__ - INFO - -------------------------------------------------- +2025-05-06 14:42:30 - __main__ - INFO - Logging configured. Level: INFO. File: Enabled ('C:\src\____GitProjects\ProjectUtility\projectutility\logs\project_utility.log') +2025-05-06 14:42:30 - __main__ - INFO - Running Mode: SCRIPT +2025-05-06 14:42:30 - __main__ - INFO - Base Directory (REPO_ROOT): C:\src\____GitProjects\ProjectUtility +2025-05-06 14:42:30 - root - INFO - Starting ProjectUtility application... +2025-05-06 14:42:30 - root - INFO - Repo Root (Base Path): C:\src\____GitProjects\ProjectUtility +2025-05-06 14:42:30 - root - INFO - Config Directory: C:\src\____GitProjects\ProjectUtility\projectutility\config +2025-05-06 14:42:30 - root - INFO - Logs Directory: C:\src\____GitProjects\ProjectUtility\projectutility\logs +2025-05-06 14:42:30 - root - INFO - Local Tools Directory: C:\src\____GitProjects\ProjectUtility\tools +2025-05-06 14:42:30 - root - INFO - Managed Tools Directory: C:\src\____GitProjects\ProjectUtility\managed_tools +2025-05-06 14:42:30 - projectutility.gui.main_window - INFO - Successfully loaded tool state from C:\src\____GitProjects\ProjectUtility\projectutility\config\tool_state.json +2025-05-06 14:42:30 - projectutility.gui.main_window - INFO - Using ttk theme: clam +2025-05-06 14:42:30 - projectutility.gui.main_window - INFO - Reloading available tools... +2025-05-06 14:42:30 - projectutility.core.tool_discovery - INFO - Starting tool discovery process based on the registry... +2025-05-06 14:42:30 - projectutility.core.registry_manager - INFO - Successfully read registry file: C:\src\____GitProjects\ProjectUtility\projectutility\config\tools_registry.json +2025-05-06 14:42:30 - projectutility.core.registry_manager - INFO - Loaded 6 valid tool entries from the registry. +2025-05-06 14:42:30 - projectutility.core.tool_discovery - WARNING - Git tool 'icon_generator_git': Expected repository directory not found at 'C:\src\____GitProjects\ProjectUtility\managed_tools\icon_generator_git'. Tool needs cloning/update. Marked as unavailable. +2025-05-06 14:42:30 - projectutility.core.tool_discovery - WARNING - Git tool 'pyinstaller_gui_git': Expected repository directory not found at 'C:\src\____GitProjects\ProjectUtility\managed_tools\pyinstaller_gui_git'. Tool needs cloning/update. Marked as unavailable. +2025-05-06 14:42:30 - projectutility.core.tool_discovery - WARNING - Git tool 'geoelevation_git': Expected repository directory not found at 'C:\src\____GitProjects\ProjectUtility\managed_tools\geoelevation_git'. Tool needs cloning/update. Marked as unavailable. +2025-05-06 14:42:30 - projectutility.core.tool_discovery - WARNING - Git tool 'dependencyanalyzer_git': Expected repository directory not found at 'C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalyzer_git'. Tool needs cloning/update. Marked as unavailable. +2025-05-06 14:42:30 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Dummy Script Runner (Local)' (ID: dummy_script, Type: local) +2025-05-06 14:42:30 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Blocco Note (Notepad - Local)' (ID: notepad, Type: local) +2025-05-06 14:42:30 - projectutility.core.tool_discovery - INFO - Tool discovery finished. Found 2 enabled/available tools. +2025-05-06 14:42:30 - projectutility.gui.main_window - INFO - Finished loading 2 tools into the listbox. +2025-05-06 14:42:30 - projectutility.gui.main_window - INFO - MainWindow initialized and UI displayed. +2025-05-06 14:42:30 - projectutility.gui.main_window - INFO - Tool Discovery: Enabled +2025-05-06 14:42:30 - projectutility.gui.main_window - INFO - Process Execution: Enabled +2025-05-06 14:42:30 - projectutility.gui.main_window - INFO - Git Features: Enabled +2025-05-06 14:42:30 - projectutility.gui.main_window - INFO - Config Window: Enabled +2025-05-06 14:42:30 - root - INFO - Main application window initialized. +2025-05-06 14:42:30 - root - INFO - Starting Tkinter main event loop. +2025-05-06 14:42:32 - projectutility.gui.main_window - INFO - User requested 'Update All Git Tools'. +2025-05-06 14:42:32 - projectutility.gui.main_window - INFO - Starting threaded batch update for all enabled Git tools... +2025-05-06 14:42:32 - projectutility.core.registry_manager - INFO - Successfully read registry file: C:\src\____GitProjects\ProjectUtility\projectutility\config\tools_registry.json +2025-05-06 14:42:32 - projectutility.core.registry_manager - INFO - Loaded 6 valid tool entries from the registry. +2025-05-06 14:42:32 - projectutility.gui.main_window - INFO - Found 4 enabled Git tools to process. +2025-05-06 14:42:32 - projectutility.core.git_manager - INFO - [icon_generator_git] Starting repo update... +2025-05-06 14:42:32 - projectutility.core.git_manager - INFO - [icon_generator_git] Repository not found. Cloning from 'http://172.17.23.250:3000/vallongol/CreateIconFromFilesPng' into 'C:\src\____GitProjects\ProjectUtility\managed_tools\icon_generator_git'... +2025-05-06 14:42:33 - projectutility.core.git_manager - INFO - [icon_generator_git] Repository cloned successfully to C:\src\____GitProjects\ProjectUtility\managed_tools\icon_generator_git. +2025-05-06 14:42:33 - projectutility.core.git_manager - INFO - [icon_generator_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:42:33 - projectutility.core.git_manager - INFO - [icon_generator_git] Fetch operation completed successfully. +2025-05-06 14:42:33 - projectutility.core.git_manager - INFO - [icon_generator_git] Checking out target ref: 'master' +2025-05-06 14:42:33 - projectutility.core.git_manager - INFO - [icon_generator_git] Already at target commit for 'master'. Checking out to ensure correct state. +2025-05-06 14:42:33 - projectutility.core.git_manager - INFO - [icon_generator_git] Checked out 'master'. +2025-05-06 14:42:33 - projectutility.core.git_manager - INFO - [icon_generator_git] On branch 'master'. Attempting ff-only pull... +2025-05-06 14:42:33 - projectutility.core.git_manager - INFO - [icon_generator_git] FF-only pull successful for 'master'. +2025-05-06 14:42:33 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Starting repo update... +2025-05-06 14:42:33 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Repository not found. Cloning from 'http://172.17.23.250:3000/vallongol/PyInstallerGUIWrapper' into 'C:\src\____GitProjects\ProjectUtility\managed_tools\pyinstaller_gui_git'... +2025-05-06 14:42:33 - projectutility.gui.main_window - INFO - Git single result for 'icon_generator_git': Success=True, Msg=Repo updated. On branch 'master' tracking 'master'. +2025-05-06 14:42:34 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Repository cloned successfully to C:\src\____GitProjects\ProjectUtility\managed_tools\pyinstaller_gui_git. +2025-05-06 14:42:34 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:42:34 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Fetch operation completed successfully. +2025-05-06 14:42:34 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Checking out target ref: 'master' +2025-05-06 14:42:34 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Already at target commit for 'master'. Checking out to ensure correct state. +2025-05-06 14:42:34 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] Checked out 'master'. +2025-05-06 14:42:34 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] On branch 'master'. Attempting ff-only pull... +2025-05-06 14:42:34 - projectutility.core.git_manager - INFO - [pyinstaller_gui_git] FF-only pull successful for 'master'. +2025-05-06 14:42:34 - projectutility.core.git_manager - INFO - [geoelevation_git] Starting repo update... +2025-05-06 14:42:34 - projectutility.core.git_manager - INFO - [geoelevation_git] Repository not found. Cloning from 'http://172.17.23.250:3000/vallongol/GeoElevation' into 'C:\src\____GitProjects\ProjectUtility\managed_tools\geoelevation_git'... +2025-05-06 14:42:34 - projectutility.gui.main_window - INFO - Git single result for 'pyinstaller_gui_git': Success=True, Msg=Repo updated. On branch 'master' tracking 'master'. +2025-05-06 14:43:06 - projectutility.core.git_manager - INFO - [geoelevation_git] Repository cloned successfully to C:\src\____GitProjects\ProjectUtility\managed_tools\geoelevation_git. +2025-05-06 14:43:06 - projectutility.core.git_manager - INFO - [geoelevation_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:43:06 - projectutility.core.git_manager - INFO - [geoelevation_git] Fetch operation completed successfully. +2025-05-06 14:43:06 - projectutility.core.git_manager - INFO - [geoelevation_git] Checking out target ref: 'master' +2025-05-06 14:43:06 - projectutility.core.git_manager - INFO - [geoelevation_git] Already at target commit for 'master'. Checking out to ensure correct state. +2025-05-06 14:43:06 - projectutility.core.git_manager - INFO - [geoelevation_git] Checked out 'master'. +2025-05-06 14:43:06 - projectutility.core.git_manager - INFO - [geoelevation_git] On branch 'master'. Attempting ff-only pull... +2025-05-06 14:43:07 - projectutility.core.git_manager - INFO - [geoelevation_git] FF-only pull successful for 'master'. +2025-05-06 14:43:07 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Starting repo update... +2025-05-06 14:43:07 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Repository not found. Cloning from 'http://172.17.23.250:3000/vallongol/DependencyAnalyzer' into 'C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalyzer_git'... +2025-05-06 14:43:07 - projectutility.gui.main_window - INFO - Git single result for 'geoelevation_git': Success=True, Msg=Repo updated. On branch 'master' tracking 'master'. +2025-05-06 14:43:07 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Repository cloned successfully to C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalyzer_git. +2025-05-06 14:43:07 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:43:07 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Fetch operation completed successfully. +2025-05-06 14:43:07 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Checking out target ref: 'master' +2025-05-06 14:43:07 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Already at target commit for 'master'. Checking out to ensure correct state. +2025-05-06 14:43:07 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Checked out 'master'. +2025-05-06 14:43:07 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] On branch 'master'. Attempting ff-only pull... +2025-05-06 14:43:07 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] FF-only pull successful for 'master'. +2025-05-06 14:43:07 - projectutility.gui.main_window - INFO - Batch update loop finished. Success: 4, Errors: 0 +2025-05-06 14:43:07 - projectutility.gui.main_window - INFO - Git single result for 'dependencyanalyzer_git': Success=True, Msg=Repo updated. On branch 'master' tracking 'master'. +2025-05-06 14:43:07 - projectutility.gui.main_window - INFO - Received Git 'all finished' signal. +2025-05-06 14:43:07 - projectutility.gui.main_window - INFO - Finished batch Git update. Succeeded: 4, Failed: 0. +2025-05-06 14:45:12 - projectutility.gui.main_window - INFO - Reloading tool list after Git batch update. +2025-05-06 14:45:12 - projectutility.gui.main_window - INFO - Reloading available tools... +2025-05-06 14:45:12 - projectutility.core.tool_discovery - INFO - Starting tool discovery process based on the registry... +2025-05-06 14:45:12 - projectutility.core.registry_manager - INFO - Successfully read registry file: C:\src\____GitProjects\ProjectUtility\projectutility\config\tools_registry.json +2025-05-06 14:45:12 - projectutility.core.registry_manager - INFO - Loaded 6 valid tool entries from the registry. +2025-05-06 14:45:12 - projectutility.core.tool_discovery - INFO - Successfully loaded parameter definitions from: C:\src\____GitProjects\ProjectUtility\managed_tools\icon_generator_git\tool_config_params.json +2025-05-06 14:45:12 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Icon Generator (Git)' (ID: icon_generator_git, Type: git) +2025-05-06 14:45:12 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'PyInstaller GUI (Git)' (ID: pyinstaller_gui_git, Type: git) +2025-05-06 14:45:12 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Geo Elevation (Git)' (ID: geoelevation_git, Type: git) +2025-05-06 14:45:12 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Dependency Analyzer (Git)' (ID: dependencyanalyzer_git, Type: git) +2025-05-06 14:45:12 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Dummy Script Runner (Local)' (ID: dummy_script, Type: local) +2025-05-06 14:45:12 - projectutility.core.tool_discovery - INFO - Successfully discovered and processed tool: 'Blocco Note (Notepad - Local)' (ID: notepad, Type: local) +2025-05-06 14:45:12 - projectutility.core.tool_discovery - INFO - Tool discovery finished. Found 6 enabled/available tools. +2025-05-06 14:45:12 - projectutility.gui.main_window - INFO - Finished loading 6 tools into the listbox. +2025-05-06 14:45:13 - projectutility.gui.main_window - INFO - Tool selected: ID='dependencyanalyzer_git' +2025-05-06 14:45:13 - projectutility.core.registry_manager - INFO - Successfully read registry file: C:\src\____GitProjects\ProjectUtility\projectutility\config\tools_registry.json +2025-05-06 14:45:13 - projectutility.core.registry_manager - INFO - Loaded 6 valid tool entries from the registry. +2025-05-06 14:45:13 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Checking repo status: C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalyzer_git... +2025-05-06 14:45:13 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Attempting to fetch updates from 'origin'... +2025-05-06 14:45:13 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Fetch operation completed successfully. +2025-05-06 14:45:13 - projectutility.core.git_manager - INFO - [dependencyanalyzer_git] Status: Up-to-date +2025-05-06 14:45:15 - projectutility.gui.main_window - INFO - Preparing to launch tool: 'Dependency Analyzer (Git)' (ID: dependencyanalyzer_git) +2025-05-06 14:45:15 - projectutility.gui.main_window - INFO - Saving state for tool 'dependencyanalyzer_git' with parameters: {} +2025-05-06 14:45:15 - projectutility.gui.main_window - INFO - Generated unique Run ID: dependencyanalyzer_git_a5190f46 +2025-05-06 14:45:15 - projectutility.gui.process_worker.dependencyanalyzer_git_a5190f46 - INFO - Initializing worker for tool: 'Dependency Analyzer (Git)' +2025-05-06 14:45:15 - projectutility.gui.process_worker.dependencyanalyzer_git_a5190f46 - INFO - Worker run method started. Preparing to execute command. +2025-05-06 14:45:15 - projectutility.gui.main_window - INFO - ProcessWorker thread started for Run ID: dependencyanalyzer_git_a5190f46 +2025-05-06 14:45:15 - projectutility.gui.process_worker.dependencyanalyzer_git_a5190f46 - INFO - Final command list constructed: ['python', '-m', 'dependencyanalyzer'] +2025-05-06 14:45:15 - projectutility.gui.process_worker.dependencyanalyzer_git_a5190f46 - INFO - Executing command: python -m dependencyanalyzer +2025-05-06 14:45:15 - projectutility.gui.process_worker.dependencyanalyzer_git_a5190f46 - INFO - Working Directory: C:\src\____GitProjects\ProjectUtility\managed_tools\dependencyanalyzer_git +2025-05-06 14:45:15 - projectutility.gui.process_worker.dependencyanalyzer_git_a5190f46 - INFO - Subprocess started successfully with PID: 13700 +2025-05-06 14:45:20 - projectutility.gui.process_worker.dependencyanalyzer_git_a5190f46 - INFO - Subprocess (PID: 13700) finished with exit code: 0 +2025-05-06 14:45:20 - projectutility.gui.process_worker.dependencyanalyzer_git_a5190f46 - INFO - Worker thread completed for run_id: dependencyanalyzer_git_a5190f46. Final exit code reported to queue: 0 +2025-05-06 14:45:20 - projectutility.gui.main_window - INFO - Worker finished message received for dependencyanalyzer_git_a5190f46. Exit Code: 0 +2025-05-06 14:45:23 - projectutility.gui.main_window - INFO - Window close requested by user. +2025-05-06 14:45:23 - projectutility.gui.main_window - INFO - No running tasks detected. Closing application window. +2025-05-06 14:45:23 - root - INFO - ProjectUtility application finished.