src/settings/Set-PowerBoltSetting.ps1

using module .\..\dynamicparams\GetSettingsNameSet.ps1

function Set-PowerBoltSetting {
    [CmdletBinding(PositionalBinding = $true)]
    Param(
        [Parameter(Mandatory = $true)]
        [object]$Value,

        [Parameter(Mandatory = $false)]
        [String]$ConfigFilePath = $script:MKPowerShellConfigFilePath,

        [switch]
        $PassThru
    )

    DynamicParam {
        if (-not $ConfigFilePath) {
            $ConfigFilePath = $script:MKPowerShellConfigFilePath
        }
        return GetSettingsNameSet -ConfigFilePath $ConfigFilePath
    }

    begin {
        $Name = $PSBoundParameters['Name']
    }

    end {
       
        # make sure that bools get double-quotes
        if ($Value -match "^.?true.?`$") {
            $Value = "true"
        }
        elseif (($Value -match "^.?false.?`$")) {
            $Value = "false"
        }
        $Script:MKPowerShellConfig = Get-Content -Path $ConfigFilePath | `
            ConvertFrom-Json -AsHashtable
        $Script:MKPowerShellConfig[$Name] = $Value

        $Script:MKPowerShellConfig | `
            ConvertTo-Json | `
            Set-Content -Path $ConfigFilePath -PassThru:$PassThru.IsPresent

        # TODO: not sure if these are intended to be commented out
        #switch ($Name) {
        #TurnOnRememberLastLocation { Restore-RememberLastLocation }
        #TurnOnQuickRestart { Restore-QuickRestartSetting }
        #TurnOnHistoryRecording { Restore-TurnOnHistoryRecording }
        #TurnOnBackup
        # Default {}
        #}
    }
}