_zimfw_run_tool() { local -r zname=${1} if [[ -z ${_zurls[${zname}]} ]]; then if (( _zprintlevel > 1 )) print -PR <%= clear_line %>"<%= okay %>%B${zname}:%b Skipping external module" return 0 fi if (( _zfrozens[${zname}] )); then if (( _zprintlevel > 1 )) print -PR <%= clear_line %>"<%= okay %>%B${zname}:%b Skipping frozen module" return 0 fi case ${_zargs_action} in install) if [[ -e ${_zdirs[${zname}]} ]]; then if (( _zprintlevel > 1 )) print -PR <%= clear_line %>"<%= okay %>%B${zname}:%b Skipping already installed module" return 0 fi _zimfw_print -nR <%= clear_line %>"Installing ${zname}<%= ellipsis %>" ;; update) if [[ ! -d ${_zdirs[${zname}]} ]]; then print -u2 -PR <%= clear_line %>"%F{red}<%= error %>%B${zname}:%b Not installed. Run %Bzimfw install%b to install.%f" return 1 fi _zimfw_print -nR <%= clear_line %>"Updating ${zname}<%= ellipsis %>" ;; *) print -u2 -PR <%= clear_line %>"%F{red}<%= error %>%B${zname}:%b Unknown action ${_zargs_action}%f" return 1 ;; esac local zcmd case ${_ztools[${zname}]} in <%= render_tools("src/tools/*", "zcmd") %> *) print -u2 -PR "<%= clear_line %>%F{red}<%= error %>%B${zname}:%b Unknown tool ${_ztools[${zname}]}%f" return 1 ;; esac zsh -c ${zcmd} ${_ztools[${zname}]} "${_zprintlevel}" "${_zargs_action}" "${zname}" "${_zdirs[${zname}]}" "${_zurls[${zname}]}" "${_ztypes[${zname}]}" "${_zrevs[${zname}]}" "${_zsubmodules[${zname}]}" "${_zonpulls[${zname}]}" }