DevVm.psm1
|
#region Module initialization [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 # Get the module root directory $script:ModuleRoot = Split-Path -Parent $MyInvocation.MyCommand.Path $script:PublicFunctionsPath = Join-Path -Path $script:ModuleRoot -ChildPath 'Public' $script:PrivateFunctionsPath = Join-Path -Path $script:ModuleRoot -ChildPath 'Private' $script:DataPath = Join-Path -Path $script:ModuleRoot -ChildPath 'Data' # Import private functions if (Test-Path $script:PrivateFunctionsPath) { $privateFunctions = @(Get-ChildItem -Path $script:PrivateFunctionsPath -Filter '*.ps1' -ErrorAction SilentlyContinue) foreach ($privateFunction in $privateFunctions) { . $privateFunction.FullName } } # Import public functions if (Test-Path $script:PublicFunctionsPath) { $publicFunctions = @(Get-ChildItem -Path $script:PublicFunctionsPath -Filter '*.ps1' -ErrorAction SilentlyContinue) foreach ($publicFunction in $publicFunctions) { . $publicFunction.FullName } } # Initialize module configuration $script:DevVmConfig = @{ RuntimeDefinitions = $null ConfigPaths = $null SessionSelections = @{ } } # Load runtime definitions $runtimeDefPath = Join-Path -Path $script:DataPath -ChildPath 'runtime-definitions.json' if (Test-Path $runtimeDefPath) { try { $script:DevVmConfig.RuntimeDefinitions = Get-Content -Path $runtimeDefPath -Raw | ConvertFrom-Json } catch { Write-Warning "Failed to load runtime definitions from $runtimeDefPath" } } # Setup default config paths Initialize-DevVmConfigPath #endregion # Create alias for quick access New-Alias -Name 'devvm' -Value 'Invoke-DevVm' -Force -ErrorAction SilentlyContinue |