Files
self/app/scripts/generate-changelog.sh
Justin Hernandez aa359654eb Add additional missing BUSL license headers (#871)
* Exclude Android from license headers

* fixes

* fix formatting

* fix command

* fix license space

* updates

* fix headers

* updates

* new line formatting
2025-08-10 16:53:53 -07:00

89 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# SPDX-License-Identifier: BUSL-1.1; Copyright (c) 2025 Social Connect Labs, Inc.; Licensed under BUSL-1.1 (see LICENSE); Apache-2.0 from 2029-06-11
# Simple changelog generator that creates release notes from git history
# Usage: ./generate-changelog.sh [from_tag] [to_tag]
set -e
# Colors
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
# Get tags
FROM_TAG=${1:-$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")}
TO_TAG=${2:-HEAD}
if [ -z "$FROM_TAG" ]; then
echo "No previous tag found. Generating changelog from beginning..."
FROM_TAG=$(git rev-list --max-parents=0 HEAD)
fi
echo -e "${YELLOW}Generating changelog from $FROM_TAG to $TO_TAG...${NC}"
# Get current version from package.json
VERSION=$(cat package.json | jq -r .version 2>/dev/null || echo "Unknown")
DATE=$(date +"%Y-%m-%d")
# Start changelog
CHANGELOG="## Release v${VERSION} (${DATE})\n\n"
# Group commits by type
FEATURES=""
FIXES=""
CHORES=""
OTHER=""
# Process commits
while IFS= read -r line; do
HASH=$(echo "$line" | cut -d' ' -f1)
MESSAGE=$(echo "$line" | cut -d' ' -f2-)
# Skip merge commits
if [[ "$MESSAGE" =~ ^Merge ]]; then
continue
fi
# Categorize commits
if [[ "$MESSAGE" =~ ^feat ]]; then
FEATURES="${FEATURES}- ${MESSAGE}\n"
elif [[ "$MESSAGE" =~ ^fix ]]; then
FIXES="${FIXES}- ${MESSAGE}\n"
elif [[ "$MESSAGE" =~ ^chore ]]; then
CHORES="${CHORES}- ${MESSAGE}\n"
else
OTHER="${OTHER}- ${MESSAGE}\n"
fi
done < <(git log --oneline --no-merges ${FROM_TAG}..${TO_TAG})
# Build changelog sections
if [ -n "$FEATURES" ]; then
CHANGELOG="${CHANGELOG}### 🚀 Features\n${FEATURES}\n"
fi
if [ -n "$FIXES" ]; then
CHANGELOG="${CHANGELOG}### 🐛 Bug Fixes\n${FIXES}\n"
fi
if [ -n "$CHORES" ]; then
CHANGELOG="${CHANGELOG}### 🔧 Maintenance\n${CHORES}\n"
fi
if [ -n "$OTHER" ]; then
CHANGELOG="${CHANGELOG}### 📝 Other Changes\n${OTHER}\n"
fi
# Add deployment info
CHANGELOG="${CHANGELOG}### 📱 Deployment Info\n"
CHANGELOG="${CHANGELOG}- iOS Build: $(cat version.json | jq -r .ios.build)\n"
CHANGELOG="${CHANGELOG}- Android Build: $(cat version.json | jq -r .android.build)\n"
# Output to file
echo -e "$CHANGELOG" > RELEASE_NOTES.md
echo -e "${GREEN}✅ Changelog generated in RELEASE_NOTES.md${NC}"
# Also output to console
echo -e "\n${YELLOW}Release Notes:${NC}"
echo -e "$CHANGELOG"