diff --git a/Makefile b/Makefile index 943402a..22848d9 100644 --- a/Makefile +++ b/Makefile @@ -152,6 +152,23 @@ MAJOR := $(word 1,$(VERSION_PARTS)) MINOR := $(word 2,$(VERSION_PARTS)) PATCH := $(word 3,$(VERSION_PARTS)) +# Check if current branch is protected +define check_protected_branch + @current_branch=$$(git rev-parse --abbrev-ref HEAD); \ + if ! echo "$(PROTECTED_BRANCH)" | grep -wq "$$current_branch"; then \ + echo "Error: Tagging is only allowed from $(PROTECTED_BRANCH) branch. You are on $$current_branch branch."; \ + exit 1; \ + fi +endef +# Check if there are pending pulls +define check_pending_pulls + @git fetch; \ + current_branch=$$(git rev-parse --abbrev-ref HEAD); \ + if [ "$$(git rev-parse HEAD)" != "$$(git rev-parse origin/$$current_branch)" ]; then \ + echo "Error: Your branch is not up to date with upstream. Please pull the latest changes before performing a release"; \ + exit 1; \ + fi +endef # ==================================================================================== # Targets @@ -182,6 +199,8 @@ test: go-test ## to test .PHONY: patch minor major patch: ## to bump patch version (semver) + $(call check_protected_branch) + $(call check_pending_pulls) @$(eval PATCH := $(shell echo $$(($(PATCH)+1)))) @$(INFO) Bumping $(APP_NAME) to Patch version $(MAJOR).$(MINOR).$(PATCH) git tag -s -a v$(MAJOR).$(MINOR).$(PATCH) -m "Bumping $(APP_NAME) to Patch version $(MAJOR).$(MINOR).$(PATCH)" @@ -189,6 +208,8 @@ patch: ## to bump patch version (semver) @$(OK) Bumping $(APP_NAME) to Patch version $(MAJOR).$(MINOR).$(PATCH) minor: ## to bump minor version (semver) + $(call check_protected_branch) + $(call check_pending_pulls) @$(eval MINOR := $(shell echo $$(($(MINOR)+1)))) @$(eval PATCH := 0) @$(INFO) Bumping $(APP_NAME) to Minor version $(MAJOR).$(MINOR).$(PATCH) @@ -197,6 +218,8 @@ minor: ## to bump minor version (semver) @$(OK) Bumping $(APP_NAME) to Minor version $(MAJOR).$(MINOR).$(PATCH) major: ## to bump major version (semver) + $(call check_protected_branch) + $(call check_pending_pulls) $(eval MAJOR := $(shell echo $$(($(MAJOR)+1)))) $(eval MINOR := 0) $(eval PATCH := 0)