SHELL := /bin/bash PROJECT_ROOT := $(CURDIR) ANDROID_DIR := $(PROJECT_ROOT)/android WEBSITE_DIR := $(PROJECT_ROOT)/website DOWNLOADS_DIR := $(WEBSITE_DIR)/downloads META_DIR := $(WEBSITE_DIR)/assets/meta APK_PATH := $(ANDROID_DIR)/app/build/outputs/apk/debug/app-debug.apk PUBLISHED_APK := $(DOWNLOADS_DIR)/app-debug.apk VERSION_FILE := $(META_DIR)/version.json .PHONY: help client-version-bump client-build client-tag client-publish publish require-release-notes \ server-start server-stop server-restart server-status server-rebuild help: @echo "Targets:" @echo " make client-build - require release notes, bump version, build debug APK, create git tag" @echo " make client-tag - create git tag for the current Android version" @echo " make client-publish - copy APK to website and refresh version metadata" @echo " make publish - require release notes, bump version, build APK, publish client, reload nginx" @echo " vars: RELEASE_NOTES='- item 1\n- item 2' or RELEASE_NOTES_FILE=/path/to/file" @echo " make server-start - start nginx" @echo " make server-stop - stop nginx" @echo " make server-restart - restart nginx" @echo " make server-status - show nginx status" @echo " make server-rebuild - test nginx config and reload nginx" require-release-notes: @$(PROJECT_ROOT)/scripts/update_release_notes.sh client-version-bump: @$(PROJECT_ROOT)/scripts/bump_version.sh client-tag: @$(PROJECT_ROOT)/scripts/create_version_tag.sh client-build: require-release-notes client-version-bump cd $(ANDROID_DIR) && ./gradlew assembleDebug --no-daemon @$(PROJECT_ROOT)/scripts/create_version_tag.sh client-publish: @mkdir -p $(DOWNLOADS_DIR) $(META_DIR) cp $(APK_PATH) $(PUBLISHED_APK) @$(PROJECT_ROOT)/scripts/update_site_metadata.sh publish: @$(MAKE) client-build @$(MAKE) client-publish @$(MAKE) server-rebuild server-start: sudo systemctl start nginx server-stop: sudo systemctl stop nginx server-restart: sudo systemctl restart nginx server-status: sudo systemctl status nginx --no-pager server-rebuild: sudo /usr/sbin/nginx -t sudo systemctl reload nginx