diff --git a/script/lib/bump-version.sh b/script/lib/bump-version.sh index b7b3bc03dc..4b9a1985eb 100755 --- a/script/lib/bump-version.sh +++ b/script/lib/bump-version.sh @@ -21,7 +21,7 @@ which cargo-set-version > /dev/null || cargo install cargo-edit cargo set-version --package $package --bump $version_increment cargo check --quiet -new_version=$(cargo metadata --no-deps --format-version=1 | jq --raw-output ".packages[] | select(.name == \"${package}\") | .version") +new_version=$(script/get-crate-version $package) branch_name=$(git rev-parse --abbrev-ref HEAD) old_sha=$(git rev-parse HEAD) tag_name=${tag_prefix}${new_version}${tag_suffix} @@ -33,8 +33,11 @@ cat < /dev/null || cargo install cargo-edit + +# Ensure we're in a clean state on an up-to-date `main` branch. +if [[ -n $(git status --short --untracked-files=no) ]]; then + echo "Can't roll the railcars with uncommitted changes" + exit 1 +fi +if [[ $(git rev-parse --abbrev-ref HEAD) != "main" ]]; then + echo "Run this command on the main branch" + exit 1 +fi +git pull -q --ff-only origin main + +# Determine the name of the new preview branch +version=$(script/get-crate-version zed) +major=$(echo $version | cut -d. -f1) +minor=$(echo $version | cut -d. -f2) +prev_minor=$(expr $minor - 1) +next_minor=$(expr $minor + 1) + +minor_branch_name="v${major}.${minor}.x" +prev_minor_branch_name="v${major}.${prev_minor}.x" +next_minor_branch_name="v${major}.${next_minor}.x" + +echo "Promoting existing branch ${prev_minor_branch_name} to stable..." +git checkout -q ${prev_minor_branch_name} +git clean -qdff +old_prev_minor_sha=$(git rev-parse HEAD) +echo -n "stable" > crates/zed/RELEASE_CHANNEL +git commit -q --all --message "Stable ${prev_minor_branch_name}" +stable_tag_name="v$(script/get-crate-version zed)" +git tag ${stable_tag_name} + +echo "Creating new preview branch ${minor_branch_name}..." +git checkout -q -b ${minor_branch_name} +echo -n "preview" > crates/zed/RELEASE_CHANNEL +git commit -q --all --message "Preview ${minor_branch_name}" +preview_tag_name="v$(script/get-crate-version zed)-pre" +git tag ${preview_tag_name} + +echo "Preparing main for version ${next_minor_branch_name}..." +git checkout -q main +git clean -q -dff +old_main_sha=$(git rev-parse HEAD) +echo -n "dev" > crates/zed/RELEASE_CHANNEL +cargo set-version --package zed --bump minor +cargo check -q +git commit -q --all --message "Dev ${next_minor_branch_name}" + +cat <