all: install build

install:
	@echo "Installing dependencies..."
	NODE_ENV=development npm ci --no-audit --no-fund --no-progress --silent

build:
	@echo "Building..."
	npm run build

create-patch-tag:
	@echo "Creating tag..."
	@last_tag=$$(git tag --list | sort -V -r | head -n 1); \
	echo "Last tag is: $$last_tag"; \
	new_tag=$$(echo $$last_tag | awk -F. '{printf "v%d.%d.%d", $$1, $$2, $$3+1}'); \
	echo "New tag is: $$new_tag"; \
	jq --arg new_tag "$$(echo $$new_tag | sed 's/^v//')" '.version = $$new_tag' package.json > package.json.tmp && mv package.json.tmp package.json; \
	npm i --no-fund --no-audit --no-progress --silent --package-lock-only; \
	git commit -am "chore(version): bump to $$new_tag"; \
	git tag $$new_tag -m "chore(version): bump to $$new_tag"

create-minor-tag:
	@echo "Creating tag..."
	@last_tag=$$(git tag --list | sort -V -r | head -n 1); \
	echo "Last tag is: $$last_tag"; \
	new_tag=$$(echo $$last_tag | awk -F. '{printf "v%d.%d.%d", $$1, $$2+1, 0}'); \
	echo "New tag is: $$new_tag"; \
	jq --arg new_tag "$$(echo $$new_tag | sed 's/^v//')" '.version = $$new_tag' package.json > package.json.tmp && mv package.json.tmp package.json; \
	npm i --no-fund --no-audit --no-progress --silent --package-lock-only; \
	git commit -am "chore(version): bump to $$new_tag"; \
	git tag $$new_tag -m "chore(version): bump to $$new_tag"

create-major-tag:
	@echo "Creating tag..."
	@last_tag=$$(git tag --list | sort -V -r | head -n 1); \
	echo "Last tag is: $$last_tag"; \
	new_tag=$$(echo $$last_tag | awk -F. '{printf "v%d.%d.%d", $$1+1, 0, 0}'); \
	echo "New tag is: $$new_tag"; \
	jq --arg new_tag "$$(echo $$new_tag | sed 's/^v//')" '.version = $$new_tag' package.json > package.json.tmp && mv package.json.tmp package.json; \
	npm i --no-fund --no-audit --no-progress --silent --package-lock-only; \
	git commit -am "chore(version): bump to $$new_tag"; \
	git tag $$new_tag -m "chore(version): bump to $$new_tag"

.PHONY: all install build create-patch-tag create-minor-tag create-major-tag
