ServiceNow.psm1

[cmdletbinding()]
param()

Write-Verbose $PSScriptRoot

$config = ConvertFrom-Json (Get-Content "$PSScriptRoot\Config\main.json" -Raw)
$Script:ServiceNowOperator = $config.FilterOperators
$script:ServiceNowTable = $config.Tables

Export-ModuleMember -Variable ServiceNowOperator, ServiceNowTable

$tableArgCompleterSb = {
    $ServiceNowTable.ClassName | ForEach-Object {
        '''{0}''' -f $_
    }
}

Register-ArgumentCompleter -CommandName 'Get-ServiceNowRecord' -ParameterName 'Table' -ScriptBlock $tableArgCompleterSb

Write-Verbose 'Import everything in sub folders folder'
foreach ($Folder in @('Private', 'Public')) {
    $Root = Join-Path -Path $PSScriptRoot -ChildPath $Folder
    if (Test-Path -Path $Root) {
        Write-Verbose "processing folder $Root"
        $Files = Get-ChildItem -Path $Root -Filter *.ps1 -Recurse

        # dot source each file
        $Files | Where-Object { $_.name -NotLike '*.Tests.ps1' } |
        ForEach-Object { Write-Verbose $_.basename; . $PSItem.FullName }
    }
}

Export-ModuleMember -Function (Get-ChildItem -Path "$PSScriptRoot\Public\*.ps1").BaseName

$Script:ServiceNowSession = @{}
Export-ModuleMember -Variable ServiceNowSession

$aliases = @{
    'Get-ServiceNowRequestItem'    = 'Get-ServiceNowRequestedItem'
    'Update-ServiceNowRequestItem' = 'Update-ServiceNowRequestedItem'
    'Remove-ServiceNowTableEntry'  = 'Remove-ServiceNowRecord'
    'New-ServiceNowTableEntry'     = 'New-ServiceNowRecord'
    'Update-ServiceNowTableEntry'  = 'Update-ServiceNowRecord'
}
$aliases.GetEnumerator() | ForEach-Object {
    Set-Alias -Name $_.Key -Value $_.Value
}
Export-ModuleMember -Alias *