Private/Invoke-ResolveDependency.ps1

<#
.SYNOPSIS
    Parse installed module based to get dependent module
.PARAMETER InstalledLocation
    Path to installed location of the module
.PARAMETER Credential
    Repository Credential
.PARAMETER Repository
    Name of the repository
#>

function Invoke-ResolveDependency {
    [CmdLetBinding()]
    param (        
        [Parameter(Mandatory = $true, HelpMessage = "Path to installed location of the module")]
        [string] $InstalledLocation,

        [Parameter(Mandatory=$false, HelpMessage = "Repository Credential")]
        [PSCredential] $Credential = $null,

        [Parameter(Mandatory=$false, HelpMessage = "Repository name")]
        [string] $Repository = $null
    )
    $ErrorActionPreference = 'Stop'    
    Write-Debug '-- begin - Invoke-ResolveDependency --'
    Write-Debug "InstalledLocation: $InstalledLocation"

    $psdFiles = Get-ChildItem -Path $InstalledLocation -Filter *.psd1 -File
    foreach ($onePsdFile in $psdFiles) {
        $Manifest = Import-PowershellDataFile -LiteralPath $onePsdFile.FullName

        foreach ($onePrivateData in $Manifest.PrivateData) {
            foreach ($onePSData in $onePrivateData.PSData) {
                foreach ($oneExternalModuleDependencies in $onePSData.ExternalModuleDependencies) {
                   $PSGAlleryInstallParam =  Get-VersionParamHelper `
                                            -Module $oneExternalModuleDependencies
                   $PSGAlleryInstallParam += @{
                       Repository = 'PSGallery'
                       Credential = $null
                    }
                    Write-Verbose "Install prerequisity from PSGallery:"
                    Write-Debug (ConvertTo-Json -InputObject $InstallParam)
                    Install-OriAzBopPrerequisity @PSGAlleryInstallParam `
                    -Verbose:$VerbosePreference `
                    -Debug:$DebugPreference 
                    
                    #Invoke-ModuleInstall @PSGAlleryInstallParam `
                    #-Verbose:$VerbosePreference `
                    #-Debug:$DebugPreference | Out-Null

                }
            }
        }

        foreach ($oneModule in $Manifest.RequiredModules) {
            $InstallParam = Get-VersionParamHelper -Module $oneModule

            if($null -ne $Credential) {
                $InstallParam += @{Credential = $Credential}
            }
            if($null -ne $Repository) {
                $InstallParam += @{Repository = $Repository}
            }
                
            Write-Debug (ConvertTo-Json -InputObject $InstallParam)
            Invoke-ModuleInstall @InstallParam | Out-Null
                    
        }  
    }
    Write-Debug '-- end - Invoke-ResolveDependency --'
}