Private/Install-RpRequiredModules.ps1

function Install-RpRequiredModules {
    # Ensures required modules are installed.
    $requiredModules = @(
        @{ Name = 'MilestonePSTools'},
        @{ Name = 'PSWriteHTML'},
        @{ Name = 'ImportExcel'}
    )

    foreach ($module in $requiredModules) {
        Write-Verbose "Checking if $($module.Name) is installed..."

        # Check if the module is installed
        if (-not (Get-Module -ListAvailable -Name $module.Name)) {
            Write-Verbose "$($module.Name) is not installed. Attempting to install..."

            try {
                Install-Module -Name $module.Name -Scope CurrentUser -Force -Verbose -AllowClobber
                Write-Verbose "$($module.Name) installed successfully."
            } catch {
                Write-Error "Failed to install $($module.Name): $_"
            }
        } else {
            Write-Verbose "$($module.Name) is already installed."
        }
    }
}