107 lines
2.2 KiB
Bash
Executable File
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
|