1#!/bin/sh
2
3# This is a convenience script for reporting issues that include a base
4# template of information. See https://github.com/docker/docker/pull/8845
5
6set -e
7
8DOCKER_ISSUE_URL=${DOCKER_ISSUE_URL:-"https://github.com/docker/docker/issues/new"}
9DOCKER_ISSUE_NAME_PREFIX=${DOCKER_ISSUE_NAME_PREFIX:-"Report: "}
10DOCKER=${DOCKER:-"docker"}
11DOCKER_COMMAND="${DOCKER}"
12export DOCKER_COMMAND
13
14# pulled from https://gist.github.com/cdown/1163649
15function urlencode() {
16	# urlencode <string>
17
18	local length="${#1}"
19	for (( i = 0; i < length; i++ )); do
20			local c="${1:i:1}"
21			case $c in
22					[a-zA-Z0-9.~_-]) printf "$c" ;;
23					*) printf '%%%02X' "'$c"
24			esac
25	done
26}
27
28function template() {
29# this should always match the template from CONTRIBUTING.md
30	cat <<- EOM
31	Description of problem:
32
33
34	\`docker version\`:
35	`${DOCKER_COMMAND} -D version`
36
37
38	\`docker info\`:
39	`${DOCKER_COMMAND} -D info`
40
41
42	\`uname -a\`:
43	`uname -a`
44
45
46	Environment details (AWS, VirtualBox, physical, etc.):
47
48
49	How reproducible:
50
51
52	Steps to Reproduce:
53	1.
54	2.
55	3.
56
57
58	Actual Results:
59
60
61	Expected Results:
62
63
64	Additional info:
65
66
67	EOM
68}
69
70function format_issue_url() {
71	if [ ${#@} -ne 2 ] ; then
72		return 1
73	fi
74	local issue_name=$(urlencode "${DOCKER_ISSUE_NAME_PREFIX}${1}")
75	local issue_body=$(urlencode "${2}")
76	echo "${DOCKER_ISSUE_URL}?title=${issue_name}&body=${issue_body}"
77}
78
79
80echo -ne "Do you use \`sudo\` to call docker? [y|N]: "
81read -r -n 1 use_sudo
82echo ""
83
84if [ "x${use_sudo}" = "xy" -o "x${use_sudo}" = "xY" ]; then
85	export DOCKER_COMMAND="sudo ${DOCKER}"
86fi
87
88echo -ne "Title of new issue?: "
89read -r issue_title
90echo ""
91
92issue_url=$(format_issue_url "${issue_title}" "$(template)")
93
94if which xdg-open 2>/dev/null >/dev/null ; then
95	echo -ne "Would like to launch this report in your browser? [Y|n]: "
96	read -r -n 1 launch_now
97	echo ""
98
99	if [ "${launch_now}" != "n" -a "${launch_now}" != "N" ]; then
100		xdg-open "${issue_url}"
101	fi
102fi
103
104echo "If you would like to manually open the url, you can open this link if your browser: ${issue_url}"
105
106