123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #!/usr/bin/env bash
- # Convenience script to rename test cases in Automake.
- # Copyright (C) 2013-2017 Free Software Foundation, Inc.
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2, or (at your option)
- # any later version.
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
- set -e -u
- me=${0##*/}
- msg_file=$me.git-msg
- fatal () { echo "$me: $*" >&2; exit 1; }
- case $# in
- 0) input=$(cat);;
- 1) input=$(cat -- "$1");;
- *) fatal "too many arguments";;
- esac
- AWK=${AWK-awk}
- SED=${SED-sed}
- [[ -f bin/automake.in && -d lib/Automake ]] \
- || fatal "can only be run from the top-level of the Automake source tree"
- $SED --version 2>&1 | grep GNU >/dev/null 2>&1 \
- || fatal "GNU sed is required by this script"
- # Input validation and cleanup.
- input=$(
- $AWK -v me="$me" '
- /^#/ { next; }
- (NF == 0) { next; }
- (NF != 2) { print me ": wrong number of fields at line " NR;
- exit(1); }
- { printf ("t/%s t/%s\n", $1, $2); }
- ' <<<"$input"
- ) || exit $?
- # Prepare git commit message.
- exec 5>"$msg_file"
- echo "tests: more significant names for some tests" >&5
- echo >&5
- $AWK >&5 <<<"$input" \
- '{ printf ("* %s: Rename...\n* %s: ... like this.\n", $1, $2) }'
- exec 5>&-
- # Rename tests.
- eval "$($AWK '{ printf ("git mv %s %s\n", $1, $2) }' <<<"$input")"
- # Adjust the list of tests (do this conditionally, since such a
- # list is not required nor used in Automake-NG).
- if test -f t/list-of-tests.mk; then
- $SED -e "$($AWK '{ printf ("s|^%s |%s |\n", $1, $2) }' <<<"$input")" \
- -i t/list-of-tests.mk
- git add t/list-of-tests.mk
- fi
- git status
- echo
- echo "NOTICE: pre-filled commit message is in file '$msg_file'"
- exit 0
|