Skip to content

Commit

Permalink
Add some helper scripts release workflows
Browse files Browse the repository at this point in the history
Signed-off-by: Siddharth Chandrasekaran <[email protected]>
  • Loading branch information
sidcha committed Apr 17, 2021
1 parent 31bc4cc commit 1f5a268
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 0 deletions.
14 changes: 14 additions & 0 deletions scripts/gen-changelog.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/bash

last_rel=$(git describe --tags | perl -pe 's/-.*//')

echo "$last_rel ## TODO"
echo -e "------\n"
date "+%d %B %Y"
echo -e "\nRelease subject ## TODO"
echo -e "\nEnhancements: ## TODO"
echo -e "\nFixes: ## TODO"

# Changes since last release
git log ${last_rel}..HEAD --oneline --no-merges --decorate=no | perl -pe 's/^\w+ / - /'
echo -e "\n"
24 changes: 24 additions & 0 deletions scripts/install-git-hooks.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

cat > .git/hooks/pre-commit << ---
#!/bin/bash
changes=\$(git diff --cached --name-status)
m="pre-commit error"
echo "\${changes}" | while read status file; do
# Release checks
if [[ "\$file" == "CHANGELOG" ]] ; then
git diff --cached CHANGELOG | grep -q '## TODO' && \\
echo "\$m release-check: CHANGELOG has TODOs" && exit 1
echo "\${changes}" | ( ! grep -q -e '^M\\sCMakeLists.txt' ) && \\
echo "\$m release-check: Version in CMakeLists.txt not modified!" && exit 1
clv="\$(git diff --cached CHANGELOG | perl -ne 'if (s/^\+v(\d+\.\d+\.\d+)/\$1/) {print;last}')"
cmv="\$(git diff --cached CMakeLists.txt | perl -ne 'if (s/^\+project\(libosdp VERSION (\d+\.\d+\.\d+)\)/\$1/) {print;last}')"
if [[ \$clv != "\$cmv" ]]; then
echo "\$m release-check: Version mismatch! (\$clv/\$cmv)" && exit 1
fi
fi
done
---
chmod a+x .git/hooks/pre-commit && echo "Installed hook: .git/hooks/pre-commit"
17 changes: 17 additions & 0 deletions scripts/release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

tag=$1

if [[ -z "$tag" ]] || [[ ! -z "$(echo $tag | perl -pe 's/v\d+\.\d+\.\d+//')" ]]; then
echo "Invalid release tag $tag; usage: $0 vX.Y.Z"
exit 1
fi

git diff --cached --name-status | while read status file; do
if [[ "$file" != "CHANGELOG" ]] && [[ "$file" != "CMakeLists.txt" ]]; then
echo "Invalid modification $file. Only CHANGELOG and CMakeLists.txt must be modified"
false
fi
done || exit 1

git commit -s -m "Release $tag" && git tag "$tag" -a -m "Release $tag"

0 comments on commit 1f5a268

Please sign in to comment.