【发布时间】:2020-08-09 15:55:42
【问题描述】:
我正在尝试为 YunoHost 编写完成插件。我正在努力解决以下情况,其中一个参数,无论是否可选,都可以采用多个值:
ynh app addaccess apps [apps ...] [-u [USERS [USERS ...]]]
典型用法:
ynh app addaccess foo-app1 bar-app2 -u barfoo1 foobar2
我已经设法使用以下代码获得了对apps 和USERS 这两个参数的建议,但我无法获得与命令可以处理的内容一致的行为。
(_ynh_app_list 和 _ynh_users_list 是对 compadd 的调用)
_yunohost_app_addaccess() {
_arguments -s -C \
'1:apps:_ynh_app_list' \
'*'{-u,--users}'[users]:users:_ynh_users_list'
}
上面的代码有点工作,除了:
- 输入单个应用名称后,切换到用户。
-
-u接受单个用户(但多个-u实例有效)
我试过*:apps:_ynh_app_list,但ynh app addaccess foo-app1 -u user1 <TAB>调用_ynh_app_list而不是_ynh_users_list
我想得到的是:
-
ynh app addaccess <TAB>显示由__ynh_app_list提供的补全 -
ynh app addaccess foo-app1 <TAB>仍然显示__ynh_app_list提供的补全 - 只要输入
-u,无论-u后面的字数是多少,所有完成建议都应该来自__ynh_users_list:yunohost app addaccess foo-app1 bar-app2 -u barfoo1 foobar2 <TAB>仍然以用户名形式__ynh_users_list完成
是否有可能实现这一点,至少最后一项([-u USER [USER...]])?非常感谢! :)
【问题讨论】:
标签: autocomplete zsh tab-completion cardinality