명령에 대한 완성 스크립트를 작성 중인데 멈췄습니다. 내가 찾은 문서와 다양한 웹사이트가 내 요구사항에 맞지 않았습니다. 주요 명령은 pacstall
이며 플래그는 입니다 -I -S -R -C -U -V -L -Up -Qd -Qi
. 대부분의 플래그의 경우 명령의 출력으로 완료가 필요합니다( pacstall -I
탭을 실행하면 명령의 출력이 표시됩니다 curl -s $(cat /usr/share/pacstall/repo/pacstallrepo.txt)/packagelist
. 지금까지 얻은 내용은 다음과 같습니다).
set -l pacstall_commands "-I -S -R -C -U -V -L -Up -Qd -Qi"
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -I -d 'Install package'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -S -d 'Search for package'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -R -d 'Remove package'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -C -d 'Change repository'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -U -d 'Update pacstall scripts'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -V -d 'Print pacstall version'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -L -d 'List packages installed'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -Up -d 'Upgrade packages'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -Qd -d 'Query the dependencies of a package'
complete -f --command pacstall -n "not __fish_seen_subcommand_from $pacstall_commands" -a -Qi -d 'Get package info'
플래그를 입력한 후에도 스크립트가 탭 완성을 유지합니다.
답변1
명령을 완료하는 플래그를 사용하면 -n
완료가 발생하는 조건을 지정할 수 있습니다. 이 경우 이 __fish_seen_subcommand_from
기능을 사용하여 하위 명령이 -I
표시되었는지 여부를 지정할 수 있습니다.
그런 다음 플래그를 사용하여 -a
실행할 명령을 지정할 수 있습니다 ()
.
complete -f --command pacstall -n "__fish_seen_subcommand_from -I" -a "(curl -s (cat /usr/share/pacstall/repo/pacstallrepo.txt)/packagelist)"
$
Fish에서는 질문에 게시된 명령의 결과를 캡처할 때 이 기호가 사용되지 않습니다.
마지막 최종 요점은. 따옴표를 제거하면 set
중복 문제가 해결됩니다. 이렇게 따옴표를 사용하면 개별 명령이 아닌 긴 명령을 지정합니다.