Estou produzindo muitas funções do ZSH e gostaria de fornecer um menu interativo para permitir que eu navegue até as várias funções, reúna os dados necessários e invoque as funções. Eu escrevi algo assim para encapsular a funcionalidade do menu:
get_input(){
local result_name=$1
for((i=2; i <= $ARGC; i++)); do
echo ${argv[i]}
done
read x
eval "${result_name}=$x"
}
invocando assim:
test_get_option(){
selected_option=''
get_input selected_option 'heres the prompt' '1) opt 1' '2) opt 2'
case $selected_option in
1) do_option_1;;
2) do_option_2;;
*) echo "please choose a selection from the options above";;
esac
}
que funciona, mas é desajeitado. O que eu prefiro é ser capaz de definir alguma estrutura hierárquica de dados (XML ou listas aninhadas ou qualquer outra coisa) para definir a árvore de opções e as funções a serem chamadas.
Alguém sabe de um sistema (ou um plugin do tipo oh-my-zsh) assim?