Blockchain explorer for Ethereum based network and a tool for inspecting and analyzing EVM based blockchains.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
blockscout/bin/version_bump.sh

79 lines
3.0 KiB

#!/bin/bash
# Path to the mix.exs file
MIX_FILES=(
"$(pwd)/mix.exs"
"$(pwd)/apps/block_scout_web/mix.exs"
"$(pwd)/apps/explorer/mix.exs"
"$(pwd)/apps/indexer/mix.exs"
"$(pwd)/apps/ethereum_jsonrpc/mix.exs"
)
CONFIG_FILE="$(pwd)/rel/config.exs"
DOCKER_COMPOSE_FILE="$(pwd)/docker-compose/docker-compose.yml"
MAKE_FILE="$(pwd)/docker/Makefile"
WORKFLOW_FILES=($(find "$(pwd)/.github/workflows" -type f \( -name "pre-release-*" -o -name "release-*" -o -name "publish-docker-image-*" \)))
METADATA_RETRIEVER_FILE="$(pwd)/apps/explorer/lib/explorer/token/metadata_retriever.ex"
# Function to bump version
bump_version() {
local type=$1
local custom_version=$2
# Extract the current version
MIX_FILE="${MIX_FILES[0]}"
current_version=$(grep -o 'version: "[0-9]\+\.[0-9]\+\.[0-9]\+"' "$MIX_FILE" | grep -o '[0-9]\+\.[0-9]\+\.[0-9]\+')
echo "Current version: $current_version"
# Split the version into its components
IFS='.' read -r -a version_parts <<< "$current_version"
# Check if the --patch flag is provided
if [[ "$type" == "--patch" ]]; then
# Increment the patch version
version_parts[2]=$((version_parts[2] + 1))
elif [[ "$type" == "--minor" ]]; then
# Increment the minor version and reset the patch version
version_parts[1]=$((version_parts[1] + 1))
version_parts[2]=0
elif [[ "$type" == "--major" ]]; then
# Increment the major version and reset the minor and patch versions
version_parts[0]=$((version_parts[0] + 1))
version_parts[1]=0
version_parts[2]=0
elif [[ "$type" == "--update-to-version" ]]; then
# Apply the version from the 3rd argument
if [[ -z "$2" ]]; then
echo "Error: No version specified for --update-to-version."
exit 1
fi
new_version="$custom_version"
IFS='.' read -r -a version_parts <<< "$new_version"
else
echo "No --patch flag provided. Exiting."
exit 1
fi
# Join the version parts back together
new_version="${version_parts[0]}.${version_parts[1]}.${version_parts[2]}"
# Replace the old version with the new version in the mix.exs files
for MIX_FILE in "${MIX_FILES[@]}"; do
sed -i '' "s/version: \"$current_version\"/version: \"$new_version\"/" "$MIX_FILE"
done
sed -i '' "s/version: \"$current_version/version: \"$new_version/" "$CONFIG_FILE"
sed -i '' "s/RELEASE_VERSION: $current_version/RELEASE_VERSION: $new_version/" "$DOCKER_COMPOSE_FILE"
sed -i '' "s/RELEASE_VERSION ?= '$current_version'/RELEASE_VERSION ?= '$new_version'/" "$MAKE_FILE"
# Replace the old version with the new version in the GitHub workflows files
for WORKFLOW_FILE in "${WORKFLOW_FILES[@]}"; do
sed -i '' "s/RELEASE_VERSION: $current_version/RELEASE_VERSION: $new_version/" "$WORKFLOW_FILE"
done
sed -i '' "s/\"blockscout-$current_version\"/\"blockscout-$new_version\"/" "$METADATA_RETRIEVER_FILE"
echo "Version bumped from $current_version to $new_version"
}
# Call the function
bump_version "$1" "$2"