mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
bin/mk-authors: Add script for updating AUTHORS.md file
If called without parameters it updates the authors file with new authors since last release tag. With the -t option a specific tag can be specified. Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com> Reviewed-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
This commit is contained in:
135
bin/mk-authors
Executable file
135
bin/mk-authors
Executable file
@@ -0,0 +1,135 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# mk-authors - Update the s390-tools authors file (AUTHORS.md)
|
||||
#
|
||||
# Invocation examples:
|
||||
#
|
||||
# $ mk-authors
|
||||
# $ mk-authors -t v2.0.0
|
||||
#
|
||||
# Copyright IBM Corp. 2017
|
||||
#
|
||||
# s390-tools is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the MIT license. See LICENSE for details.
|
||||
|
||||
cmd=$(basename $0)
|
||||
authors_file="AUTHORS.md"
|
||||
|
||||
cleanup()
|
||||
{
|
||||
test -f $authors_file_tmp && rm -f $authors_file_tmp
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
#
|
||||
# Print usage information
|
||||
#
|
||||
print_usage()
|
||||
{
|
||||
cat <<EoUSAGE
|
||||
Usage: $cmd [-t LAST_GIT_TAG]
|
||||
|
||||
Add all new authors since last release to the $authors_file file. Without
|
||||
the -t option the tool uses the last available git tag as last release.
|
||||
|
||||
The tool should be called form the s390-tools master branch.
|
||||
|
||||
OPTIONS
|
||||
-t, --tag LAST_GIT_TAG Use git tag LAST_GIT_TAG as starting point
|
||||
-h, --help Print this help, then exit
|
||||
EoUSAGE
|
||||
}
|
||||
|
||||
#
|
||||
# Print help hint for option parsing error
|
||||
#
|
||||
print_parse_error_and_exit()
|
||||
{
|
||||
echo "Try '$cmd -h' for more information." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
# Parse options
|
||||
#
|
||||
opts=$(getopt -o ht: -l help,tag: -n $cmd -- "$@")
|
||||
if [ $? != 0 ]; then
|
||||
print_parse_error_and_exit
|
||||
fi
|
||||
# Use eval to remove getopt quotes
|
||||
eval set -- $opts
|
||||
while [ -n $1 ]; do
|
||||
case $1 in
|
||||
-h | --help)
|
||||
print_usage
|
||||
exit 0
|
||||
;;
|
||||
-t | --tag)
|
||||
release_tag_last=$2
|
||||
shift 2
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ $# != 0 ]; then
|
||||
echo "$cmd: Invalid argument $1" >&2
|
||||
print_parse_error_and_exit
|
||||
fi
|
||||
|
||||
#
|
||||
# Get git root and last release tag
|
||||
#
|
||||
git_root=$(git rev-parse --show-toplevel 2> /dev/null)
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "$cmd: Use tool within s390-tools git repository" >&2
|
||||
print_parse_error_and_exit
|
||||
fi
|
||||
authors_file_path=$git_root/$authors_file
|
||||
# Get last release tag if not specified via -t
|
||||
if [ -z $release_tag_last ]; then
|
||||
tag_commit=$(git rev-list --tags --max-count=1)
|
||||
release_tag_last=$(git describe --tags $tag_commit)
|
||||
fi
|
||||
# Verify release tag
|
||||
git show $release_tag_last &> /dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "$cmd: Cannot find tag '$release_tag_last'" >&2
|
||||
print_parse_error_and_exit
|
||||
fi
|
||||
|
||||
#
|
||||
# Update authors file
|
||||
#
|
||||
|
||||
# Create temporary file for new author list
|
||||
authors_file_tmp=$(mktemp /tmp/authors.XXXXXX)
|
||||
|
||||
echo "$cmd: Adding new authors since tag: $release_tag_last"
|
||||
{
|
||||
# Print authors list without header
|
||||
tail -n +4 $authors_file_path
|
||||
# Add the new authors
|
||||
git log --format="- %an" $release_tag_last..
|
||||
# Then sort everything and remove duplicates
|
||||
} | sort | uniq > $authors_file_tmp
|
||||
# Create new AUTHORS file with header ...
|
||||
cat <<EoHEADER > $authors_file_path
|
||||
List of all individuals having contributed content to s390-tools
|
||||
----------------------------------------------------------------
|
||||
|
||||
EoHEADER
|
||||
# ... and add new content
|
||||
cat $authors_file_tmp >> $authors_file_path
|
||||
|
||||
cat <<EoUPDATE_MSG
|
||||
- Updated file: $authors_file_path
|
||||
- Verify changes with: git diff $authors_file_path
|
||||
- Do a manual *cleanup* before commiting if necessary.
|
||||
EoUPDATE_MSG
|
||||
Reference in New Issue
Block a user