src/Integration/Set-ps12exeIntegration.ps1

<#
.SYNOPSIS
一次性设置/撤销 ps12exe 的全部集成
.DESCRIPTION
依次调用 Set-ps12exeContextMenu、Set-ps12exeAgentSkill 与 Set-ps12exeVSCodeExtension,
启用/禁用/重置 ps12exe 的右键菜单、Agent Skill 与 VS Code 扩展。
.PARAMETER action
enable、disable 或 reset
.PARAMETER Locale
要使用的语言代码
.PARAMETER Skip
要跳过的集成项,可包含 ContextMenu、AgentSkill、VSCodeExtension 中的任意个。
.EXAMPLE
Set-ps12exeIntegration
.EXAMPLE
Set-ps12exeIntegration -action 'disable'
.EXAMPLE
Set-ps12exeIntegration -Skip ContextMenu,VSCodeExtension
#>

[CmdletBinding()]
param (
    [ValidateScript({
        . $PSScriptRoot\..\predicate.ps1
        (IsEnable $_) -or (IsDisable $_) -or ($_ -eq 'reset')
    })]
    [ArgumentCompleter({
        param($Command, $Parameter, $WordToComplete, $CommandAst, $FakeBoundParams)
        . $PSScriptRoot\..\predicate.ps1
        if (-not $WordToComplete) {
            @('enable', 'disable', 'reset')
        }
        else {
            @($DisablePredicates; $EnablePredicates; 'reset') | Where-Object { $_ -like "$WordToComplete*" }
        }
    })]
    $action = 'on',
    [ArgumentCompleter({
        Param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
        . "$PSScriptRoot\..\LocaleArgCompleter.ps1" @PSBoundParameters
    })]
    [string]$Locale,
    [ValidateSet('ContextMenu', 'AgentSkill', 'VSCodeExtension')]
    [ArgumentCompleter({
        Param($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameters)
        @('ContextMenu', 'AgentSkill', 'VSCodeExtension') | Where-Object { $_ -like "$wordToComplete*" }
    })]
    [string[]]$Skip = @(),
    [switch]$help
)

$LocalizeData = . $PSScriptRoot\..\LocaleLoader.ps1 -Locale $Locale

if ($help) {
    . $PSScriptRoot\..\HelpShower.ps1 -HelpData $LocalizeData.IntegrationHelpData | Write-Host
    return
}

$LocaleCode = $LocalizeData.LangID
if ('ContextMenu' -notin $Skip) {
    & "$PSScriptRoot/Set-ps12exeContextMenu.ps1" -action $action -Locale $LocaleCode
}
if ('AgentSkill' -notin $Skip) {
    & "$PSScriptRoot/Set-ps12exeAgentSkill.ps1" -action $action -Locale $LocaleCode
}
if ('VSCodeExtension' -notin $Skip) {
    & "$PSScriptRoot/Set-ps12exeVSCodeExtension.ps1" -action $action -Locale $LocaleCode
}