Meu script zsh aceita os seguintes argumentos:
./script --connect server --foo 3 --bar 5 name
--foo
e --bar
pegar números inteiros, name
é o único argumento sem opção e --connect
deve ser concluído a partir de uma lista predefinida de servidores. Estou preso na --connect
parte em que tentei definir a lista de servidores.
_arguments -S : \
'--foo' \
'--bar' \
'--connect' \
'*:server:->servers'
_servers() {
local -a server_list
server_list=(
'server1'
'server2'
)
_describe -t server-names "server name" server_list
}
ele vai oferecer as opções quando eu digitar -<TAB>
, mas não me oferece os servidores depois --connect
. Além disso, não sei como incorporar o name
argumento, que é um argumento sem opção.
E também preciso especificar isso --foo
e --bar
preciso de um número inteiro
Escrevi um script de conclusão que parece ter o comportamento correto. Não tenho certeza se está tudo certo e este script provavelmente pode ser melhorado.
Por exemplo, se todas as opções são obrigatórias e
name
devem ser sugeridas apenas no final de todas as opções, então não sei como fazer.As opções são sugeridas mesmo depois
name
, caso não tenham sido escritas antes. Se você não quiser que o usuário veja sugestões de opções depoisname
, substitua a linha 12 do script por:Aqui está o script de conclusão: