SED="sed -i"
if [[ "$OSTYPE" == "darwin"* ]]; then
SED="sed -i ''"
fi
get_version() {
local file="$1" local regex="$2" local result=$3
if [ -f "$file" ]; then
while IFS= read -r line || [[ -n "$line" ]]; do
if [[ "$line" =~ $regex ]]; then
eval $result="'${BASH_REMATCH[1]}'"
break
fi
done < "$file"
fi
}
prepend_version(){
local msg=$(<$1) local regex="$2" local ver="$3"
if [[ "x$ver" != "x" ]]; then
if ! [[ "$msg" =~ $regex ]]; then
echo "$ver: $msg" > $1
else
echo "$ver: ${BASH_REMATCH[1]}" > $1
fi
fi
}
update_copyright() {
local copyright="$1" local year=$(date +"%Y")
files=$(git diff --cached --name-only --diff-filter=d)
for x in $files; do
if [[ "$(file $x)" == *"ASCII text"* ]]; then
local updated=
local original=
while IFS= read -r line || [[ -n "$line" ]]; do
local regex="(.*$copyright)[[:space:]]*([0-9]{4})-([0-9]{4})(.*)"
if [[ "$line" =~ $regex ]]; then
if [ "${BASH_REMATCH[3]}" != "$year" ]; then
updated="${BASH_REMATCH[1]} ${BASH_REMATCH[2]}-${year}${BASH_REMATCH[4]}"
original="$line"
fi
break
fi
local regex="(.*$copyright)[[:space:]]*([0-9]{4})(.*)"
if [[ "$line" =~ $regex ]]; then
if [ "${BASH_REMATCH[2]}" != "$year" ]; then
updated="${BASH_REMATCH[1]} ${BASH_REMATCH[2]}-${year}${BASH_REMATCH[3]}"
original="$line"
fi
break
fi
done < "$x"
if [ "x$updated" != "x" ]; then
$SED -e "s/$original/$updated/" "$x"
git add "$x"
fi
fi
done
}
increment_version() {
local file="$1" local regex="$2"
if [ -f "$file" ]; then
local original=
while IFS= read -r line || [[ -n "$line" ]]; do
if [[ "$line" =~ $regex ]]; then
original="$line"
break
fi
done < "$file"
IFS=. read major minor rev <<< ${BASH_REMATCH[2]}
((rev++))
ver="$major.$minor.$rev"
updated="${BASH_REMATCH[1]}$ver${BASH_REMATCH[3]}"
$SED -e "s/$original/$updated/" "$file"
git add "$file"
echo "Version: $ver ${file}"
fi
}