fix(cli): align native wrapper help and version flags

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
JerrettDavis 2026-04-11 00:40:16 -05:00
parent 777faa85a7
commit 4d9c281749
2 changed files with 50 additions and 13 deletions

View file

@ -155,7 +155,7 @@ function Invoke-HeadroomDocker {
param([string[]]$Arguments)
$dockerArgs = New-Object System.Collections.Generic.List[string]
$dockerArgs.AddRange(@('run','--rm','-it'))
$dockerArgs.AddRange([string[]]@('run','--rm','-it'))
$dockerArgs.AddRange((Get-SharedDockerArgs))
$dockerArgs.Add('--entrypoint')
$dockerArgs.Add('headroom')
@ -201,7 +201,7 @@ function Start-ProxyContainer {
$containerName = "headroom-proxy-$Port-$PID"
$dockerArgs = New-Object System.Collections.Generic.List[string]
$dockerArgs.AddRange(@('run','-d','--rm','--name',$containerName,'-p',"$Port`:$Port"))
$dockerArgs.AddRange([string[]]@('run','-d','--rm','--name',$containerName,'-p',"$Port`:$Port"))
$dockerArgs.AddRange((Get-SharedDockerArgs))
$dockerArgs.Add($HeadroomImage)
$dockerArgs.Add('--host')
@ -269,6 +269,9 @@ function Test-HelpFlag {
param([string[]]$Arguments)
foreach ($arg in $Arguments) {
if ($arg -eq '--') {
break
}
if ($arg -eq '--help' -or $arg -eq '-?') {
return $true
}
@ -481,12 +484,12 @@ function Invoke-OpenClawPrepareEntryJson {
)
$dockerArgs = New-Object System.Collections.Generic.List[string]
$dockerArgs.AddRange(@('run','--rm'))
$dockerArgs.AddRange([string[]]@('run','--rm'))
$dockerArgs.AddRange((Get-SharedDockerArgs))
$dockerArgs.Add('--entrypoint')
$dockerArgs.Add('headroom')
$dockerArgs.Add($HeadroomImage)
$dockerArgs.AddRange(@('wrap','openclaw','--prepare-only','--proxy-port',"$($Parsed.ProxyPort)",'--startup-timeout-ms',"$($Parsed.StartupTimeoutMs)"))
$dockerArgs.AddRange([string[]]@('wrap','openclaw','--prepare-only','--proxy-port',"$($Parsed.ProxyPort)",'--startup-timeout-ms',"$($Parsed.StartupTimeoutMs)"))
if ($ExistingEntryJson) {
$dockerArgs.Add('--existing-entry-json')
$dockerArgs.Add($ExistingEntryJson)
@ -515,12 +518,12 @@ function Invoke-OpenClawPrepareUnwrapEntryJson {
param([string]$ExistingEntryJson)
$dockerArgs = New-Object System.Collections.Generic.List[string]
$dockerArgs.AddRange(@('run','--rm'))
$dockerArgs.AddRange([string[]]@('run','--rm'))
$dockerArgs.AddRange((Get-SharedDockerArgs))
$dockerArgs.Add('--entrypoint')
$dockerArgs.Add('headroom')
$dockerArgs.Add($HeadroomImage)
$dockerArgs.AddRange(@('unwrap','openclaw','--prepare-only'))
$dockerArgs.AddRange([string[]]@('unwrap','openclaw','--prepare-only'))
if ($ExistingEntryJson) {
$dockerArgs.Add('--existing-entry-json')
$dockerArgs.Add($ExistingEntryJson)
@ -883,14 +886,14 @@ function Invoke-PrepareOnly {
)
$dockerArgs = New-Object System.Collections.Generic.List[string]
$dockerArgs.AddRange(@('run','--rm','-it'))
$dockerArgs.AddRange([string[]]@('run','--rm','-it'))
$dockerArgs.AddRange((Get-SharedDockerArgs))
$dockerArgs.Add('--env')
$dockerArgs.Add("HEADROOM_RTK_TARGET=$(Get-RtkTarget)")
$dockerArgs.Add('--entrypoint')
$dockerArgs.Add('headroom')
$dockerArgs.Add($HeadroomImage)
$dockerArgs.AddRange(@('wrap',$Tool,'--prepare-only'))
$dockerArgs.AddRange([string[]]@('wrap',$Tool,'--prepare-only'))
foreach ($arg in $KnownArgs) {
$dockerArgs.Add($arg)
}
@ -910,6 +913,11 @@ if ($args.Count -eq 0) {
switch ($args[0]) {
'wrap' {
if ($args.Count -eq 1 -or $args[1] -eq '--help' -or $args[1] -eq '-?') {
Invoke-HeadroomDocker -Arguments @('wrap','--help')
exit 0
}
if ($args.Count -lt 2) {
Fail 'Usage: headroom wrap <claude|codex|aider|cursor|openclaw> [...]'
}
@ -928,12 +936,18 @@ switch ($args[0]) {
exit 0
}
if (Test-HelpFlag -Arguments $wrapArgs) {
$helpArgs = @('wrap', $tool) + $wrapArgs
Invoke-HeadroomDocker -Arguments $helpArgs
exit 0
}
$parsed = Parse-WrapArgs -Arguments $wrapArgs
$proxyArgs = New-Object System.Collections.Generic.List[string]
if ($parsed.Learn) { $proxyArgs.Add('--learn') }
if ($parsed.Backend) { $proxyArgs.AddRange(@('--backend', $parsed.Backend)) }
if ($parsed.Anyllm) { $proxyArgs.AddRange(@('--anyllm-provider', $parsed.Anyllm)) }
if ($parsed.Region) { $proxyArgs.AddRange(@('--region', $parsed.Region)) }
if ($parsed.Backend) { $proxyArgs.AddRange([string[]]@('--backend', $parsed.Backend)) }
if ($parsed.Anyllm) { $proxyArgs.AddRange([string[]]@('--anyllm-provider', $parsed.Anyllm)) }
if ($parsed.Region) { $proxyArgs.AddRange([string[]]@('--region', $parsed.Region)) }
switch ($tool) {
'claude' { }
@ -990,6 +1004,11 @@ switch ($args[0]) {
}
}
'unwrap' {
if ($args.Count -eq 1 -or $args[1] -eq '--help' -or $args[1] -eq '-?') {
Invoke-HeadroomDocker -Arguments @('unwrap','--help')
exit 0
}
if ($args.Count -ge 2 -and $args[1] -eq 'openclaw') {
$unwrapArgs = if ($args.Count -gt 2) { $args[2..($args.Count - 1)] } else { @() }
if (Test-HelpFlag -Arguments $unwrapArgs) {
@ -1019,7 +1038,7 @@ switch ($args[0]) {
}
$dockerArgs = New-Object System.Collections.Generic.List[string]
$dockerArgs.AddRange(@('run','--rm','-it','-p',"$port`:$port"))
$dockerArgs.AddRange([string[]]@('run','--rm','-it','-p',"$port`:$port"))
$dockerArgs.AddRange((Get-SharedDockerArgs))
$dockerArgs.Add('--entrypoint')
$dockerArgs.Add('headroom')

View file

@ -133,7 +133,7 @@ append_common_container_args() {
ref+=(--user "$(id -u):$(id -g)")
fi
append_passthrough_envs ref
append_passthrough_envs "$1"
}
append_tty_args() {
@ -341,6 +341,9 @@ run_host_tool() {
contains_help_flag() {
local arg
for arg in "$@"; do
if [[ "${arg}" == "--" ]]; then
break
fi
if [[ "${arg}" == "--help" || "${arg}" == "-?" ]]; then
return 0
fi
@ -793,6 +796,11 @@ main() {
case "$1" in
wrap)
if (($# == 1)) || [[ "$2" == "--help" || "$2" == "-?" ]]; then
run_headroom wrap --help
return
fi
(($# >= 2)) || die "Usage: headroom wrap <claude|codex|aider|cursor|openclaw> [...]"
local tool="$2"
shift 2
@ -806,6 +814,11 @@ main() {
return
fi
if contains_help_flag "$@"; then
run_headroom wrap "${tool}" "$@"
return
fi
local known_args host_args port no_rtk no_proxy learn backend anyllm region
parse_wrap_args known_args host_args port no_rtk no_proxy learn backend anyllm region "$@"
@ -874,6 +887,11 @@ EOF
esac
;;
unwrap)
if (($# == 1)) || [[ "$2" == "--help" || "$2" == "-?" ]]; then
run_headroom unwrap --help
return
fi
if (($# >= 2)) && [[ "$2" == "openclaw" ]]; then
shift 2
if contains_help_flag "$@"; then