src/public/get/Get-SignalLocalConfiguration.ps1

<#
    .SYNOPSIS
        Retrieves the current Signal module configuration from the local configuration file.
 
    .DESCRIPTION
        Reads and returns the Signal module configuration from the local XML configuration file.
        This function provides access to the stored configuration settings including the sender
        number, Signal server URL, and other module settings. If no configuration file exists,
        the function will display a warning message with instructions on how to create a new
        configuration, unless the -Quiet parameter is used to suppress warnings.
 
    .PARAMETER Quiet
        Suppresses warning messages when the configuration file is missing or inaccessible.
        Use this parameter when you want to check for configuration existence without
        displaying warning messages to the user.
 
    .EXAMPLE
        Get-SignalLocalConfiguration
         
        Retrieves the current Signal configuration. If no configuration exists, displays
        a warning with instructions on how to create one.
 
    .EXAMPLE
        Get-SignalLocalConfiguration -Quiet
         
        Retrieves the current Signal configuration without displaying any warnings if
        the configuration file is missing.
 
    .EXAMPLE
        $config = Get-SignalLocalConfiguration -Quiet
        if ($config) {
            Write-Host "Signal is configured for: $($config.SenderNumber)"
        } else {
            Write-Host "No Signal configuration found."
        }
         
        Checks if a configuration exists and displays appropriate information without warnings.
 
    .OUTPUTS
        System.Object
        Returns the configuration object containing Signal module settings, or $null if
        no configuration file exists.
 
    .NOTES
        The configuration file is stored as an XML file in the user's profile directory.
        If no configuration exists, use New-SignalConfiguration to create a new configuration.
        This function is typically used internally by other Signal module functions to
        access configuration settings.
 
    .LINK
        New-SignalConfiguration
        Set-SignalConfiguration
#>

function Get-SignalLocalConfiguration {
    [CmdletBinding(PositionalBinding = $false,
                SupportsPaging = $false,
                SupportsShouldProcess = $false)]
    [OutputType([object])]
    param
    (
        [switch]$Quiet
    )
    
    if (Test-Path $SignalConfigFile.Fullname) {
        return import-clixml -Path $SignalConfigFile.Fullname -ErrorAction Stop
    }
    if (!$Quiet.IsPresent) {
        Write-Warning "No configuration file found. Path: $($SignalConfigFile.Fullname)"
        Write-Warning "Run New-SignalConfiguration -SenderNumber +491223345 -SignalServerURL 'http://mysignaldocker.local:8080'"
    }
}

if (!(Test-Path $SignalConfigFile.Fullname)) {
    Write-Warning "Signal is not configured. Run Get-SignalConfiguration to find out more."
}

if (!(Test-Path $SignalConfigFile.DirectoryName)) {
    New-Item -Path $SignalConfigFile.DirectoryName -ItemType Directory -Force
}
#endregion