| 
									
										
										
										
											2024-02-22 07:01:45 +11:00
										 |  |  | #!/bin/bash
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if ! git diff-index --quiet HEAD --; then | 
					
						
							|  |  |  |   echo "Please stash uncommitted changes before running release script" | 
					
						
							|  |  |  |   exit 1 | 
					
						
							|  |  |  | fi | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | git checkout main | 
					
						
							|  |  |  | git pull | 
					
						
							|  |  |  | git fetch --all | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Get the latest semver tag from git | 
					
						
							|  |  |  | latest_tag=$(jq -r '.version' package.json) | 
					
						
							|  |  |  | latest_tag="v$latest_tag" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Print the latest semver tag | 
					
						
							|  |  |  | echo "Latest semver tag: $latest_tag" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Function to bump version numbers | 
					
						
							|  |  |  | bump_version() { | 
					
						
							|  |  |  |   local version=$1 | 
					
						
							|  |  |  |   local bump_type=$2 | 
					
						
							|  |  |  |   local major=$(echo $version | cut -d '.' -f 1 | sed 's/v//') | 
					
						
							|  |  |  |   local minor=$(echo $version | cut -d '.' -f 2) | 
					
						
							|  |  |  |   local patch=$(echo $version | cut -d '.' -f 3) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   case "$bump_type" in | 
					
						
							|  |  |  |     major) | 
					
						
							|  |  |  |       major=$((major + 1)) | 
					
						
							|  |  |  |       minor=0 | 
					
						
							|  |  |  |       patch=0 | 
					
						
							|  |  |  |       ;; | 
					
						
							|  |  |  |     minor) | 
					
						
							|  |  |  |       minor=$((minor + 1)) | 
					
						
							|  |  |  |       patch=0 | 
					
						
							|  |  |  |       ;; | 
					
						
							|  |  |  |     *) | 
					
						
							|  |  |  |       patch=$((patch + 1)) | 
					
						
							|  |  |  |       ;; | 
					
						
							|  |  |  |   esac | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   echo "v${major}.${minor}.${patch}" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Determine the type of bump based on the argument | 
					
						
							|  |  |  | bump_type=${1:-patch} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Bump the version | 
					
						
							|  |  |  | new_version=$(bump_version $latest_tag $bump_type) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Print the new semver tag | 
					
						
							|  |  |  | echo "New semver tag: $new_version" | 
					
						
							|  |  |  | new_version_number=${new_version:1} | 
					
						
							|  |  |  | echo "New version number without 'v': $new_version_number" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | git checkout -b "cut-release-$new_version" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo "$(jq --arg v "$new_version_number" '.version=$v' package.json --indent 2)" > package.json | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-16 07:15:42 -04:00
										 |  |  | git add package.json | 
					
						
							| 
									
										
										
										
											2024-02-22 07:01:45 +11:00
										 |  |  | git commit -m "Cut release $new_version" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | echo "" | 
					
						
							|  |  |  | echo "Versions has been bumped in relevant json files, a branch has been created and committed to." | 
					
						
							|  |  |  | echo "" | 
					
						
							|  |  |  | echo "What's left for you to do is, push the branch and make the release PR." | 
					
						
							|  |  |  | echo "" | 
					
						
							| 
									
										
										
										
											2024-03-27 05:16:20 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | echo "Suggested changelog:" | 
					
						
							|  |  |  | echo "\`\`\`" | 
					
						
							|  |  |  | echo "## What's Changed" | 
					
						
							|  |  |  | git log $(git describe --tags --abbrev=0)..HEAD --oneline --pretty=format:%s | grep -v Bump | grep -v 'Cut release v' | awk '{print "* "toupper(substr($0,0,1))substr($0,2)}' | 
					
						
							|  |  |  | echo "" | 
					
						
							|  |  |  | echo "**Full Changelog**: https://github.com/KittyCAD/modeling-app/compare/${latest_tag}...${new_version}" | 
					
						
							|  |  |  | echo "\`\`\`" | 
					
						
							|  |  |  | echo "and would recommend removing ones that aren't related to the product (eg. CI changes)" |