diff --git a/kg-microbe.Makefile b/kg-microbe.Makefile index e2c87e13..f0ed794e 100644 --- a/kg-microbe.Makefile +++ b/kg-microbe.Makefile @@ -13,39 +13,44 @@ PART_SIZE := 2000M # Size of each part (less than 2GB) .PHONY: release pre-release tag generate-tarballs split-transformed-tarball release: generate-tarballs split-transformed-tarball - @echo "Creating a release on GitHub..." - @read -p "Enter release tag (e.g., $(shell date +%Y-%m-%d)): " TAG_NAME; \ - read -p "Enter release title: " RELEASE_TITLE; \ - read -p "Enter release notes: " RELEASE_NOTES; \ + @$(call create_release,release) + +pre-release: generate-tarballs split-transformed-tarball + @$(call create_release,pre-release) + +tag: generate-tarballs split-transformed-tarball + @$(call create_tag) + +generate-tarballs: + @echo "Generating tarballs of the specified directories..." + @tar -czvf $(TRANSFORMED_TARBALL) data/transformed + @cp data/merged/merged-kg.tar.gz $(MERGED_TARBALL) + @echo "Tarballs generated successfully as $(TRANSFORMED_TARBALL) and $(MERGED_TARBALL)." + +split-transformed-tarball: + @echo "Splitting the transformed tarball into parts..." + @split -b $(PART_SIZE) -d -a 3 $(TRANSFORMED_TARBALL) $(TRANSFORMED_TARBALL)-part + @for f in $(TRANSFORMED_TARBALL)-part*; do mv "$$f" "$$f.tar.gz"; done + @echo "Transformed tarball split into parts successfully." + +define create_release + @echo "Creating a $(1) on GitHub..." + @read -p "Enter $(1) tag (e.g., $(shell date +%Y-%m-%d)): " TAG_NAME; \ + read -p "Enter $(1) title: " RELEASE_TITLE; \ + read -p "Enter $(1) notes: " RELEASE_NOTES; \ if git rev-parse "$$TAG_NAME" >/dev/null 2>&1; then \ echo "Error: Tag '$$TAG_NAME' already exists. Please choose a different tag."; \ exit 1; \ fi; \ git tag -a $$TAG_NAME -m "$$RELEASE_TITLE"; \ git push origin $$TAG_NAME; \ - gh release create $$TAG_NAME --title "$$RELEASE_TITLE" --notes "$$RELEASE_NOTES" --repo $(REPO_OWNER)/$(REPO_NAME); \ + gh release create $$TAG_NAME --title "$$RELEASE_TITLE" --notes "$$RELEASE_NOTES" $(if $(filter $(1),pre-release),--prerelease) --repo $(REPO_OWNER)/$(REPO_NAME); \ gh release upload $$TAG_NAME $(TRANSFORMED_TARBALL)-part*.tar.gz --repo $(REPO_OWNER)/$(REPO_NAME); \ gh release upload $$TAG_NAME $(MERGED_TARBALL) --repo $(REPO_OWNER)/$(REPO_NAME); \ - echo "Release $$TAG_NAME created successfully." + echo "$(capitalize $(1)) $$TAG_NAME created successfully." +endef -pre-release: generate-tarballs split-transformed-tarball - @echo "Creating a pre-release on GitHub..." - @read -p "Enter pre-release tag (e.g., $(shell date +%Y-%m-%d)-rc1): " TAG; \ - read -p "Enter pre-release title: " PRE_RELEASE_TITLE; \ - read -p "Enter pre-release notes: " PRE_RELEASE_NOTES; \ - if git rev-parse "$$TAG" >/dev/null 2>&1; then \ - echo "Error: Tag '$$TAG' already exists. Please choose a different tag."; \ - exit 1; \ - fi; \ - git tag -a $$TAG -m "$$PRE_RELEASE_TITLE"; \ - git push origin $$TAG; \ - gh release create $$TAG --title "$$PRE_RELEASE_TITLE" --notes "$$PRE_RELEASE_NOTES" --prerelease --repo $(REPO_OWNER)/$(REPO_NAME); \ - gh release upload $$TAG $(TRANSFORMED_TARBALL)-part*.tar.gz --repo $(REPO_OWNER)/$(REPO_NAME); \ - gh release upload $$TAG $(MERGED_TARBALL) --repo $(REPO_OWNER)/$(REPO_NAME); \ - echo "Pre-release $$TAG created successfully." - - -tag: generate-tarballs split-transformed-tarball +define create_tag @echo "Creating a release on GitHub..." @read -p "Enter release tag (e.g., $(shell date +%Y-%m-%d)): " TAG; \ read -p "Enter release title: " RELEASE_TITLE; \ @@ -55,15 +60,6 @@ tag: generate-tarballs split-transformed-tarball gh release upload $$TAG $(TRANSFORMED_TARBALL)-part*.tar.gz --repo $(REPO_OWNER)/$(REPO_NAME); \ gh release upload $$TAG $(MERGED_TARBALL) --repo $(REPO_OWNER)/$(REPO_NAME); \ echo "Release $$TAG created successfully." +endef -generate-tarballs: - @echo "Generating tarballs of the specified directories..." - @tar -czvf $(TRANSFORMED_TARBALL) data/transformed - @cp data/merged/merged-kg.tar.gz $(MERGED_TARBALL) - @echo "Tarballs generated successfully as $(TRANSFORMED_TARBALL) and $(MERGED_TARBALL)." - -split-transformed-tarball: - @echo "Splitting the transformed tarball into parts..." - @split -b $(PART_SIZE) -d -a 3 $(TRANSFORMED_TARBALL) $(TRANSFORMED_TARBALL)-part - @for f in $(TRANSFORMED_TARBALL)-part*; do mv "$$f" "$$f.tar.gz"; done - @echo "Transformed tarball split into parts successfully." +capitalize = $(subst $(1),$(shell echo $(1) | tr '[:lower:]' '[:upper:]'),$(1))