github.com/docker/docker@v299999999.0.0-20200612211812-aaf470eca7b5+incompatible/contrib/report-issue.sh (about)

     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  
     6  set -e
     7  
     8  DOCKER_ISSUE_URL=${DOCKER_ISSUE_URL:-"https://github.com/docker/docker/issues/new"}
     9  DOCKER_ISSUE_NAME_PREFIX=${DOCKER_ISSUE_NAME_PREFIX:-"Report: "}
    10  DOCKER=${DOCKER:-"docker"}
    11  DOCKER_COMMAND="${DOCKER}"
    12  export DOCKER_COMMAND
    13  
    14  # pulled from https://gist.github.com/cdown/1163649
    15  function 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  
    28  function 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  
    70  function 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  echo -ne "Do you use \`sudo\` to call docker? [y|N]: "
    80  read -r -n 1 use_sudo
    81  echo ""
    82  
    83  if [ "x${use_sudo}" = "xy" -o "x${use_sudo}" = "xY" ]; then
    84  	export DOCKER_COMMAND="sudo ${DOCKER}"
    85  fi
    86  
    87  echo -ne "Title of new issue?: "
    88  read -r issue_title
    89  echo ""
    90  
    91  issue_url=$(format_issue_url "${issue_title}" "$(template)")
    92  
    93  if which xdg-open 2> /dev/null > /dev/null; then
    94  	echo -ne "Would like to launch this report in your browser? [Y|n]: "
    95  	read -r -n 1 launch_now
    96  	echo ""
    97  
    98  	if [ "${launch_now}" != "n" -a "${launch_now}" != "N" ]; then
    99  		xdg-open "${issue_url}"
   100  	fi
   101  fi
   102  
   103  echo "If you would like to manually open the url, you can open this link if your browser: ${issue_url}"