diff --git a/.github/workflows/changesets-mode.yml b/.github/workflows/changesets-mode.yml new file mode 100644 index 000000000..e69de29bb diff --git a/scripts/manage-pre-mode.sh b/scripts/manage-pre-mode.sh new file mode 100644 index 000000000..dfed7e3f6 --- /dev/null +++ b/scripts/manage-pre-mode.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +# Detect the branch from argument +BRANCH=$(echo "$1") + +PRE_PATH=".changeset/pre.json" + +pre_json_exists=false +is_on_tag=false +is_on_pre_mode=false + +grep -q '"mode": "pre"' "$PRE_PATH" && is_on_pre_mode=true || is_on_pre_mode=false + +if [ -f "$PRE_PATH" ]; then + pre_json_exists=true +fi + +enter_pre_mode() { + local branch="$1" + local tag="$2" + + grep -q '"tag": "'$tag'"' "$PRE_PATH" && is_on_tag=true || is_on_tag=false + + if $is_on_tag && $pre_json_exists && $is_on_pre_mode; then + echo "You are already in pre mode for '$tag' on '$branch'" + exit 1 + fi + + npx changeset pre exit + npx changeset pre enter "$tag" + + # Set needs_commit to true on github env + echo "needs_commit=true" >> $GITHUB_ENV + + echo "Entered pre mode for '$branch' on '$tag'" +} + +exit_pre_mode() { + local needs_exit=false + + grep -q '"mode": "exit"' "$PRE_PATH" && needs_exit=false || needs_exit=true + + if ! $needs_exit || ! $pre_json_exists; then + echo "You are not in pre mode" + exit 1 + fi + + npx changeset pre exit + + # Set needs_commit to true on github env + echo "needs_commit=true" >> $GITHUB_ENV + + echo "Exited pre mode" +} + +case "$BRANCH" in + develop) + enter_pre_mode "develop" "pre" + ;; + next) + enter_pre_mode "next" "next" + ;; + main) + exit_pre_mode + ;; + *) + exit 1 + ;; +esac \ No newline at end of file