local usage="${0} [action]
Actions:
    | update      | Fetches and merges upstream zim commits if possible |
    | info        | Prints zim and system info                          |
    | issue       | Create a template for reporting an issue            |
    | clean-cache | Clean the zim cache                                 |
    | build-cache | Rebuild the zim cache                               |
    | remove      | *experimental* Remove zim as best we can            |
    | reset       | Reset zim to the latest commit                      |
    | help        | Print this usage message                            |
    | debug       | Invokes the trace-zim script which produces logs    |"

if (( ${#} != 1 )); then
  print ${usage}
  return 1
fi

local tools
tools="${ZIM}/tools"

case ${1} in
  update)      zsh ${tools}/zim_update
               ;;
  info)        zsh ${tools}/zim_info
               ;;
  issue)       zsh ${tools}/zim_issue
               ;;
  clean-cache) zsh ${tools}/zim_clean_cache && print 'Cleaned cache'
               ;;
  build-cache) source ${tools}/zim_build_cache && print 'Rebuilt cache'
               ;;
  remove)      zsh ${tools}/zim_remove
               ;;
  reset)       zsh ${tools}/zim_reset
               ;;
  debug)       zsh ${ZIM}/modules/debug/functions/trace-zim
               ;;
  *)           print ${usage}
               ;;
esac