.PHONY: update-hash
update-hash:
	@if [ -z "$$REPO_NAME" ]; then \
		read -r -p "Enter repository name: " REPO_NAME; \
	else \
		REPO_NAME="$$REPO_NAME"; \
	fi; \
	VERSION=$$(curl -s "https://api.github.com/repos/chenasraf/$$REPO_NAME/releases/latest" | jq -r .tag_name); \
	URL="https://github.com/chenasraf/$$REPO_NAME/archive/refs/tags/$$VERSION.tar.gz"; \
	echo "Version: $$VERSION"; \
	echo "URL: $$URL"; \
	curl -Ls "$$URL" -o "$$REPO_NAME-$$VERSION.tar.gz"; \
	HASH=$$(sha256sum "$$REPO_NAME-$$VERSION.tar.gz" | awk '{print $$1}'); \
	printf "SHA256: %s\n" "$$HASH"; \
	rm "$$REPO_NAME-$$VERSION.tar.gz"; \
	sed -i.bak "s/sha256 \".*\"/sha256 \"$$HASH\"/" "Formula/$$REPO_NAME.rb"; \
	rm "Formula/$$REPO_NAME.rb.bak"; \
	sed -i.bak "s| url \".*\"| url \"$$URL\"|" "Formula/$$REPO_NAME.rb"; \
	rm "Formula/$$REPO_NAME.rb.bak"

.PHONY: create-app-update
create-app-update:
	@if [ -z "$$REPO_NAME" ]; then \
		read -r -p "Enter repository name: " REPO_NAME; \
	else \
		REPO_NAME="$$REPO_NAME"; \
	fi; \
	$(MAKE) update-hash REPO_NAME="$$REPO_NAME"; \
	VERSION=$$(curl -s "https://api.github.com/repos/chenasraf/$$REPO_NAME/releases/latest" | jq -r .tag_name); \
	echo "Version: $$VERSION"; \
	BRANCH="feature/$$REPO_NAME-$$VERSION"; \
	if ! git switch -C "$$BRANCH"; then \
		echo "Branch already exists, aborting"; \
		exit 1; \
	fi; \
	git add "Formula/$$REPO_NAME.rb"; \
	git commit -m "feat: update $$REPO_NAME to $$VERSION"; \
	git push --force --set-upstream origin "$$BRANCH"; \
	if [ -n "$$PR_BODY" ]; then \
		printf '%s\n' "$$PR_BODY" > /tmp/pr_body.md; \
		gh pr create --fill --body-file /tmp/pr_body.md; \
		PR_EXIT=$$?; \
		rm -f /tmp/pr_body.md; \
	else \
		gh pr create --fill; \
		PR_EXIT=$$?; \
	fi; \
	if [ $$PR_EXIT -eq 0 ]; then \
		URL=$$(gh pr list --json url | jq -r '.[0].url'); \
		open "$$URL"; \
		git switch master; \
	else \
		echo "Couldn't create PR, aborting"; \
		exit 1; \
	fi

.PHONY: create-app
create-app:
	@if [ -z "$$REPO_NAME" ]; then \
		read -r -p "Enter repository name: " REPO_NAME; \
	else \
		REPO_NAME="$$REPO_NAME"; \
	fi; \
	if [ -f "Formula/$$REPO_NAME.rb" ]; then \
		echo "Formula/$$REPO_NAME.rb already exists, aborting"; \
		exit 1; \
	fi; \
	VERSION=$$(curl -s "https://api.github.com/repos/chenasraf/$$REPO_NAME/releases/latest" | jq -r .tag_name); \
	if [ -z "$$VERSION" ] || [ "$$VERSION" = "null" ]; then \
		echo "Could not fetch latest version for $$REPO_NAME, aborting"; \
		exit 1; \
	fi; \
	URL="https://github.com/chenasraf/$$REPO_NAME/archive/refs/tags/$$VERSION.tar.gz"; \
	HOMEBREW_EDITOR=cat brew create --tap chenasraf/tap --set-name "$$REPO_NAME" "$$URL"; \
	echo "Created Formula/$$REPO_NAME.rb"; \
	echo "Version: $$VERSION"; \
	echo "URL: $$URL"; \
	echo ""; \
	echo "Please edit Formula/$$REPO_NAME.rb and press Enter when done..."; \
	read -r _; \
	BRANCH="feature/$$REPO_NAME-$$VERSION"; \
	if ! git switch -C "$$BRANCH"; then \
		echo "Branch already exists, aborting"; \
		exit 1; \
	fi; \
	git add "Formula/$$REPO_NAME.rb"; \
	git commit -m "feat: add $$REPO_NAME $$VERSION"; \
	git push --force --set-upstream origin "$$BRANCH"; \
	if [ -n "$$PR_BODY" ]; then \
		printf '%s\n' "$$PR_BODY" > /tmp/pr_body.md; \
		gh pr create --fill --body-file /tmp/pr_body.md; \
		PR_EXIT=$$?; \
		rm -f /tmp/pr_body.md; \
	else \
		gh pr create --fill; \
		PR_EXIT=$$?; \
	fi; \
	if [ $$PR_EXIT -eq 0 ]; then \
		URL=$$(gh pr list --json url | jq -r '.[0].url'); \
		open "$$URL"; \
		git switch master; \
	else \
		echo "Couldn't create PR, aborting"; \
		exit 1; \
	fi
