mirror of
https://github.com/DeBrosOfficial/network.git
synced 2025-12-13 01:18:49 +00:00
- Updated the pre-push hook to change the directory to the repository root before staging CHANGELOG.md and Makefile, ensuring the commands execute in the correct context.
89 lines
3.4 KiB
Bash
89 lines
3.4 KiB
Bash
#!/bin/bash
|
|
|
|
# Colors for output
|
|
CYAN='\033[0;36m'
|
|
YELLOW='\033[1;33m'
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
BLUE='\033[0;34m'
|
|
NOCOLOR='\033[0m'
|
|
|
|
# Get the directory where this hook is located
|
|
HOOK_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
# Go up from .git/hooks/ to repo root
|
|
REPO_ROOT="$(cd "$HOOK_DIR/../.." && pwd)"
|
|
CHANGELOG_SCRIPT="$REPO_ROOT/scripts/update_changelog.sh"
|
|
PREVIEW_FILE="$REPO_ROOT/.changelog_preview.tmp"
|
|
VERSION_FILE="$REPO_ROOT/.changelog_version.tmp"
|
|
|
|
# Update changelog before push
|
|
if [ -f "$CHANGELOG_SCRIPT" ]; then
|
|
echo -e "\n${CYAN}Updating changelog...${NOCOLOR}"
|
|
bash "$CHANGELOG_SCRIPT"
|
|
changelog_status=$?
|
|
if [ $changelog_status -ne 0 ]; then
|
|
echo -e "${RED}Push aborted: changelog update failed.${NOCOLOR}"
|
|
exit 1
|
|
fi
|
|
|
|
# Show preview if changelog was updated
|
|
if [ -f "$PREVIEW_FILE" ] && [ -f "$VERSION_FILE" ]; then
|
|
NEW_VERSION=$(cat "$VERSION_FILE")
|
|
PREVIEW_CONTENT=$(cat "$PREVIEW_FILE")
|
|
|
|
echo ""
|
|
echo -e "${BLUE}========================================================================${NOCOLOR}"
|
|
echo -e "${CYAN} CHANGELOG PREVIEW${NOCOLOR}"
|
|
echo -e "${BLUE}========================================================================${NOCOLOR}"
|
|
echo ""
|
|
echo -e "${GREEN}New Version: ${YELLOW}$NEW_VERSION${NOCOLOR}"
|
|
echo ""
|
|
echo -e "${CYAN}Changelog Entry:${NOCOLOR}"
|
|
echo -e "${BLUE}────────────────────────────────────────────────────────────────────────${NOCOLOR}"
|
|
echo -e "$PREVIEW_CONTENT"
|
|
echo -e "${BLUE}────────────────────────────────────────────────────────────────────────${NOCOLOR}"
|
|
echo ""
|
|
echo -e "${YELLOW}Do you want to proceed with the push? (yes/no):${NOCOLOR} "
|
|
# Read from /dev/tty to ensure we can read from terminal even in git hook context
|
|
read -r confirmation < /dev/tty
|
|
|
|
if [ "$confirmation" != "yes" ]; then
|
|
echo -e "${RED}Push aborted by user.${NOCOLOR}"
|
|
echo -e "${YELLOW}To revert changes, run:${NOCOLOR}"
|
|
echo -e " git checkout CHANGELOG.md Makefile"
|
|
# Clean up temp files
|
|
rm -f "$PREVIEW_FILE" "$VERSION_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}Proceeding with push...${NOCOLOR}"
|
|
|
|
# Commit the updated CHANGELOG.md and Makefile
|
|
cd "$REPO_ROOT"
|
|
echo -e "${CYAN}Staging CHANGELOG.md and Makefile...${NOCOLOR}"
|
|
git add CHANGELOG.md Makefile
|
|
|
|
echo -e "${CYAN}Committing changes...${NOCOLOR}"
|
|
NEW_VERSION=$(cat "$VERSION_FILE")
|
|
git commit -m "chore: update changelog and version to $NEW_VERSION" || {
|
|
# If commit fails (e.g., no changes to commit), continue anyway
|
|
echo -e "${YELLOW}Note: Could not commit changes (may already be committed)${NOCOLOR}"
|
|
}
|
|
|
|
# Clean up temp files
|
|
rm -f "$PREVIEW_FILE" "$VERSION_FILE"
|
|
fi
|
|
else
|
|
echo -e "${YELLOW}Warning: changelog update script not found at $CHANGELOG_SCRIPT${NOCOLOR}"
|
|
fi
|
|
|
|
echo -e "\n${CYAN}Running tests...${NOCOLOR}"
|
|
go test ./... # Runs all tests in your repo
|
|
status=$?
|
|
if [ $status -ne 0 ]; then
|
|
echo -e "${RED}Push aborted: some tests failed.${NOCOLOR}"
|
|
exit 1
|
|
else
|
|
echo -e "${GREEN}All tests passed. Proceeding with push.${NOCOLOR}"
|
|
fi
|