_mix_refresh () { if [ -f .mix_tasks ]; then rm .mix_tasks fi echo "Generating .mix_tasks..." > /dev/stderr _mix_generate cat .mix_tasks } _mix_does_task_list_need_generating () { [ ! -f .mix_tasks ]; } _mix_generate () { mix help | grep '^mix [^ ]' | sed -E "s/mix ([^ ]*) *# (.*)/\1:\2/" > .mix_tasks } _mix () { if [ -f mix.exs ]; then if _mix_does_task_list_need_generating; then echo "\nGenerating .mix_tasks..." > /dev/stderr _mix_generate fi local tasks=(${(f)"$(cat .mix_tasks)"}) _describe 'tasks' tasks fi } compdef _mix mix alias mix_refresh='_mix_refresh'