MavenArtifactIDLister.psm1


function Get-ModulesArtifactIds {

    [CmdletBinding()]
    param (
        [String]$workPath = 'C:\Users\User\IdeaProjects\CarrierEX'
    )

    Write-Verbose "Working directory is $workPath"

    $modules = ls -Path $workPath -Directory | Select-Object FullName, Name | ?{$_.Name -notmatch 'idea' }

    $newModules = New-Object System.Collections.ArrayList
    foreach ($module in $modules) {
        Write-Verbose ("Listing module " + $module.Name)
    
        $modulePath = $module.FullName
        $module.PSObject.Properties.Remove('FullName')

        if (!(Test-Path ($modulePath + '\pom.xml'))) {
            Write-Verbose "No pom.xml file found"
            $module | Add-Member ArtifactId ''
            $module | Add-Member ChildModules ''
            $newModules.Add($module) > $null
            continue
        }
    
        $pomFile = [xml](Get-Content ($modulePath + '\pom.xml'))

        $artifactId = $pomFile.project.artifactId

        if ($artifactId -ne $null) {
            $module | Add-Member ArtifactId $artifactId
        }
        else {
            Write-Verbose "artifactId not found"
            $module | Add-Member ArtifactId ''
        }

        $childModules = $pomFile.project.modules

        if ($childModules -ne $null) {
            
            $val = $childModules | Select-Object -Expand Name

            $names = ''

            for ($i = 0; $i -lt $childModules.ChildNodes.Count; $i++) {
            
                $names += $childModules.ChildNodes[$i].'#text' + ', '

            }

            $names = $names.Substring(0, $names.Length - 2)

            $module | Add-Member ChildModules $names
        }
        else {

            $module | Add-Member ChildModules ''
            Write-Verbose "No child modules found"

        }

        $newModules.Add($module) > $null
    }

    $newModules | Export-Csv ($workPath + '\modules.txt') -NoTypeInformation

}

Export-ModuleMember -Function Get-ModulesArtifactIds