#
# zim_info - easily create an issue template
#

# create our 'pause' function
waiter_func() {
  local input_key
  read -sk \?"Press [Enter] to continue; anything else to quit." input_key
  if [[ ${input_key} == $'\n' ]]; then
    print "\r                                                    "
    return 0
  else
    return 1
  fi
}

# print init dialog
print "Please check the existing issues to make sure you\'re not duplicating a report"
print "https://github.com/Eriner/zim/issues"

# if they don't accept, bail
if ! waiter_func; then
  return 1
fi

# for convenience, this is our new home
cd ${ZDOTDIR:-${HOME}}/.zim

# collect sys info
git_dirty=$(command git status --porcelain 2>/dev/null | tail -n1)
git_ref=$(command git rev-parse --short HEAD)
zsh_version=$(zsh --version)
operating_sys=$(uname -a)



# we're going to template and build the issue here (as an array for convenience)

issue_md=("Environment Info"
          "----------------"
	  "- Zim commit ref: ${git_ref}"
	  "- Zsh version: ${zsh_version}"
	  "- Operating System Info: ${operating_sys}"
	  ""
	  "Description"
	  "-----------"
	  "${user_desc}"
	  ""
	  "Steps to Reproduce"
	  "------------------"
	  "${user_reproduce}"
	  ""
	  "Images or other Information"
	  "---------------------------"
	  ""
	  )
	  

# print the output:
# hack: we need to iterate over the elements to capture the blank spaces (to print newlines)
for (( i=0; i < ${#issue_md[@]}; i++ )); do
  printf '%s\n' ${issue_md[i]}
done

# if we have a dirty git, report it
if [[ -n ${git_dirty} ]]; then
  print "${ZDOTDIR:-${HOME}}/.zim has a dirty git working tree."
  print "here is the diff:"
  print '```'
  print $(command git diff)
  print '```'
fi


print '\n\n'
print 'Please copy the above and use this when reporting the issue\n'

# optionally, now we can produce debug info
print 'If you would like to produce some helpful logs about your environment, run:'
print '$ zmanage debug'