#!/bin/sh

# This is a convenience script for reporting issues that include a base
# template of information. See https://github.com/docker/docker/pull/8845

set -e

DOCKER_ISSUE_URL=${DOCKER_ISSUE_URL:-"https://github.com/docker/docker/issues/new"}
DOCKER_ISSUE_NAME_PREFIX=${DOCKER_ISSUE_NAME_PREFIX:-"Report: "}
DOCKER=${DOCKER:-"docker"}
DOCKER_COMMAND="${DOCKER}"
export DOCKER_COMMAND

# pulled from https://gist.github.com/cdown/1163649
function urlencode() {
	# urlencode <string>

	local length="${#1}"
	for ((i = 0; i < length; i++)); do
		local c="${1:i:1}"
		case $c in
			[a-zA-Z0-9.~_-]) printf "$c" ;;
			*) printf '%%%02X' "'$c" ;;
		esac
	done
}

function template() {
	# this should always match the template from CONTRIBUTING.md
	cat <<- EOM
		Description of problem:


		\`docker version\`:
		$(${DOCKER_COMMAND} -D version)


		\`docker info\`:
		$(${DOCKER_COMMAND} -D info)


		\`uname -a\`:
		$(uname -a)


		Environment details (AWS, VirtualBox, physical, etc.):


		How reproducible:


		Steps to Reproduce:
		1.
		2.
		3.


		Actual Results:


		Expected Results:


		Additional info:


	EOM
}

function format_issue_url() {
	if [ ${#@} -ne 2 ]; then
		return 1
	fi
	local issue_name=$(urlencode "${DOCKER_ISSUE_NAME_PREFIX}${1}")
	local issue_body=$(urlencode "${2}")
	echo "${DOCKER_ISSUE_URL}?title=${issue_name}&body=${issue_body}"
}

echo -ne "Do you use \`sudo\` to call docker? [y|N]: "
read -r -n 1 use_sudo
echo ""

if [ "x${use_sudo}" = "xy" -o "x${use_sudo}" = "xY" ]; then
	export DOCKER_COMMAND="sudo ${DOCKER}"
fi

echo -ne "Title of new issue?: "
read -r issue_title
echo ""

issue_url=$(format_issue_url "${issue_title}" "$(template)")

if which xdg-open 2> /dev/null > /dev/null; then
	echo -ne "Would like to launch this report in your browser? [Y|n]: "
	read -r -n 1 launch_now
	echo ""

	if [ "${launch_now}" != "n" -a "${launch_now}" != "N" ]; then
		xdg-open "${issue_url}"
	fi
fi

echo "If you would like to manually open the url, you can open this link if your browser: ${issue_url}"
