Main/Register-xUtilityConfig.ps1

<#
.SYNOPSIS
Used to register xUtility configuration
 
.DESCRIPTION
Uses ConfigHive to register module's default configuration into the system allowing for user configuration values to be
used
 
.NOTES
This function is not intended for user invocation
 
#>


function Register-xUtilityConfig {
  [CmdletBinding()]
  param()

  $ErrorActionPreference = 'Stop'
  $hiveModule = Get-Module -Name 'ConfigHive' -ListAvailable
  if ($null -eq $hiveModule) {
    throw [xUtilityException]::New(
      'Register-xUtilityConfig',
      [xUtilityErrorCategory]::DependencyNotFound,
      "ConfigHive module needs to be installed on this system in order to use this method")
  }

  $hiveName = GetConfig('Module.Config.HiveName')
  $isRegistered = Get-RegisteredHives | Where-Object { $_ -eq $hiveName }
  if ($null -eq $isRegistered) {
    Print -Message 'About to register xUtility within ConfigHive module'
    $dataStoreInfo = @{
      'HiveName'   = $hiveName
      'StoreName'  = 'CliFileStore'
      'StoreLevel' = 'User'
    }

    $userDataStore = New-DataStore @dataStoreInfo
    Register-ConfigHive -HiveName $hiveName -UserStore $userDataStore
  }

  # Seed default values
  Initialize-DataStore -HiveName $hiveName -Level Origin -Data $Script:defaultConfig
}