# UFC Model Update - Run on Startup # This script runs when you start your laptop and checks for model updates $PROJECT_DIR = "C:\Users\Alvaro\Desktop\ufc" $LOG_FILE = "$PROJECT_DIR\logs\startup_update.log" function Write-Log { param($Message) $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" "[$timestamp] $Message" | Out-File -FilePath $LOG_FILE -Append Write-Host "[$timestamp] $Message" } # Function to safely execute git commands function Invoke-GitCommand { param($Command, $Description) try { Write-Log "Git: $Description" $result = Invoke-Expression "git $Command" 2>&1 if ($LASTEXITCODE -eq 0) { Write-Log "Git: $Description completed successfully" return $true } else { Write-Log "Git: $Description failed with exit code $LASTEXITCODE" return $false } } catch { Write-Log "Git: Error executing $Description - $($_.Exception.Message)" return $false } } # Function to commit and push changes function Push-ChangesToGit { if (!(Test-Path ".git")) { Write-Log "Not in a git repository. Skipping git operations." return } # Check git status $gitStatus = git status --porcelain 2>&1 if ($LASTEXITCODE -ne 0 -or [string]::IsNullOrWhiteSpace($gitStatus)) { Write-Log "No changes to commit or git error." return } # Add and commit changes if ((Invoke-GitCommand "add ." "Adding startup changes") -and (Invoke-GitCommand "commit -m `"Startup model check: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')`"" "Committing startup changes")) { Invoke-GitCommand "push" "Pushing startup changes to remote" } } try { Write-Log "Startup model check initiated..." Set-Location $PROJECT_DIR # Run a quick check (won't retrain unless needed) Write-Log "Running model update pipeline..." $result = python -m src.main --pipeline update 2>&1 Write-Log "Pipeline result: $result" # Push logs and any changes to git Write-Log "Syncing changes to git repository..." Push-ChangesToGit if ($result -like "*retraining*" -or $result -like "*new data*") { # Show notification if models were updated Add-Type -AssemblyName System.Windows.Forms [System.Windows.Forms.MessageBox]::Show("UFC models were updated with new data and synced to git!", "Model Update", "OK", "Information") Write-Log "Models were updated and synced to git." } else { Write-Log "No model updates needed, logs synced to git." } } catch { Write-Log "Error during startup check: $($_.Exception.Message)" # Try to push error logs to git try { Push-ChangesToGit } catch { Write-Log "Failed to push error logs to git: $($_.Exception.Message)" } } Write-Log "Startup check completed."