Estoy escribiendo funciones de finalización de zsh para un par de comandos del mismo kit de herramientas.
Los comandos son lo suficientemente diferentes que quiero escribir diferentes terminaciones para ellos en diferentes archivos. (es decir, la finalización de do_thingA
está en un archivo _do_thingA
con un #compdef do_thingA
encabezado y la finalización de do_thingB
está dentro _do_thingB
de #compdef do_thingB
).
Tan diferentes como son, todos los comandos tienen un argumento en común. Entonces, con todas las cosas que difieren entre los comandos, en algún momento todos los _do_thing
archivos contienen algo similar
...
_arguments \
...
'-c[common option]:common option:_helper_function' \
...
Me gustaría evitar tener el mismo _helper_function
definido en todos los _do_thing
archivos. Y además, me gustaría permitir que los usuarios proporcionen los suyos (mejor personalizados _helper_function
).
¿Cuál es la mejor manera de lograr esto?
cosas consideradas:
guardia de definición
Ya sé que puedo evitar sobrescribir el _helper_function
si ya está definido con
(( $+functions[_helper_function] )) ||
_helper_function() {
...
}
que pude poner en cada uno de los _do_thing
archivos. Pero preferiría externalizar el _helper_function
en un _helper_function
archivo separado .
poner el cuerpo de la función en un archivo separado
Si creo un archivo _helper_function
(y lo tengo en algún lugar del fpath
) su contenido se convertirá en el cuerpo de la función de una _helper_function
función. En este escenario, no veo cómo poner el protector de definición alrededor del _helper_function()
encabezado (ya que ya no lo escribo yo mismo).
fuente