homebrew-cask/developer/bin/update_issue_template_urls

107 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# update_issue_template_urls
#
###
### settings
###
set -e # exit on uncaught error
set +o histexpand # don't expand history expressions
shopt -s nocasematch # case-insensitive regular expressions
###
### constants
###
script_subdir='developer/bin'
template_subdir='doc/issue_templates'
generate_url_script='generate_issue_template_url'
files_to_update=(README.md doc/readme.md doc/reporting_bugs/*)
###
### functions
###
warn () {
local message="$*"
message="${message//\\t/$'\011'}"
message="${message//\\n/$'\012'}"
message="${message%${message##*[![:space:]]}}"
printf "%s\n" "$message" 1>&2
}
die () {
warn "$@"
exit 1
}
usage () {
printf "update_issue_template_urls
Regenerate issue template URLs and update them in relevant files.
Note: docs using issue template URLs must use a specific format.
If the template file is called 'bug_report.md', the URL must be
referenced in the doc as follows:
[Some link text][bug_report_template]
...
[bug_report_template]: (auto-generated-url)
"
}
cd_to_project_root () {
local script_dir git_root
script_dir="$(/usr/bin/dirname "$0")"
cd "$script_dir"
git_root="$(git rev-parse --show-toplevel)"
if [[ -z "$git_root" ]]; then
die "ERROR: Could not find git project root"
fi
cd "$git_root"
}
generate_template_url () {
local template_file="$1"
"$script_subdir/$generate_url_script" "$template_file"
}
update_template_url () {
local template_name="$1"
local template_url="$2"
local escaped_template_url="${template_url/&/\\&}"
/usr/bin/sed -i '' \
-e "s|^\\(\\[${template_name}\\]: \\).*$|\\1${escaped_template_url}|g" \
-- "${files_to_update[@]}"
}
###
### main
###
_update_issue_template_urls () {
local template_file template_name template_url
cd_to_project_root
for template_file in ./$template_subdir/*; do
template_name="${template_file##*/}"
template_name="${template_name%%.*}"
template_url="$(generate_template_url "$template_file")"
update_template_url "$template_name" "$template_url"
done
}
# process args
if [[ $1 =~ ^-+h(elp)?$ ]]; then
usage
exit
fi
# dispatch main
_update_issue_template_urls