dlib/docs/bash_helper_functions

53 lines
1.9 KiB
Bash
Executable File

#/bin/sh
#
# This script defines some helper functions used by other scripts in the docs
# folder.
# Get the time the given filename was last modified.
get_last_modified_date()
{
local filename=$1
RESULT=`git log -1 --format="%ad" --date=format:'%b %d, %Y' -- $filename`
}
get_dlib_version()
{
cat ../dlib/CMakeLists.txt | awk '/set\(CPACK_PACKAGE_VERSION_'$1'/{ match($2,"\"(.*)\"",a); print a[1]}'
}
# Dump a copy of the repo contents to $1
dump_repo_to()
{
mkdir -p $1
git archive HEAD `git rev-parse --show-toplevel` | tar -xC $1
}
# Call like git_logs_as_xml HEAD~4..HEAD out.xml to write the logs in that range to out.xml
git_logs_as_xml()
{
local logrange=$1
local outfile=$2
# What paths to include in the logs
local paths="../dlib ../examples ../tools ../python_examples"
(echo "<log>"; git log --stat=80 --date=iso-strict --pretty=format:"</files_changed></logentry>%n<logentry revision=\"%H\">%n<author email=\"%ae\">%an</author>%n<date>%ad</date>%nGIT_COMMIT_MESSAGE_BEGIN%sGIT_COMMIT_MESSAGE_END%n<files_changed>%n" $logrange $paths | tail -n+2 ; echo; echo '</files_changed></logentry>' ; echo "</log>" ) > $outfile
# sanitize git commit messages
sed -e '/GIT_COMMIT_MESSAGE_BEGIN.*GIT_COMMIT_MESSAGE_END/ { s/</\&lt;/g; s/>/\&gt;/g; s/&/&amp;/g; s/GIT_COMMIT_MESSAGE_BEGIN/<msg>/g; s/GIT_COMMIT_MESSAGE_END/<\/msg>/g; }' -i $outfile
# trim whitespace at start and end of <files_changed> tags.
sed -e ':a' -e 'N' -e '$!ba' -e "s/<files_changed>[ \n]*/<files_changed> /g" -e "s/[ \n]*<\/files_changed>/<\/files_changed>/g" -i $outfile
}
# call like: set_dlib_version MAJOR 42 to set MAJOR version to 42.
set_dlib_version()
{
sed -i -e 's/\(set(CPACK_PACKAGE_VERSION_'$1' *"\).*\(".*\)/\1'$2'\2/' ../dlib/CMakeLists.txt
}
MAJOR_NUM=`get_dlib_version MAJOR`
MINOR_NUM=`get_dlib_version MINOR`
PATCH_NUM=`get_dlib_version PATCH`