# # Helper Makefile SHELL := bash cmdphp = bin/* PHP ?= `which php` PEAR = ./bin/pear DBUSER=gerd DBPASSWD=gerd123 DBNAME=schaufelberger PROJECT=schaufelberger2025 SERVER=exit0.net SERVER_PARENT=www # set this variable when running as backup-user that does not have permissions to write DUMPDES=doc define dumpDbStat $(eval $@_START = $(1)) $(eval $@_END = $(shell expr $(1) + 1 )) echo -n "Dump statistic data for ${$@_START} ..." mysqldump -t -e -u $(DBUSER) --password=$(DBPASSWD) $(DBNAME) \ --where="created >= '${$@_START}-01-01' AND created < '${$@_END}-01-01'" \ wbgenericview \ wbpageview \ wbsessionview \ wbvfsfileview \ wbcookiepreferences \ | head -n -1 >$(DUMPDES)/dumpstat-${$@_START}.sql echo " done" endef help: @echo @echo "********************************************************************************" @echo "Project $(PROJECT)" @echo @echo "This makefile helps to install the project and to maintain it." @echo "Hence, there are several targets for common tasks:" @echo " - deploy" @echo " Upgrade to new version, usually this calls \"git pull\"" @echo " - flushcache" @echo " Deletes cache files and forces to reload and parse configuration," @echo " translations etc." @echo " - dump" @echo " Create database dumps of table structure and primary data" @echo " Optionally set make variable DUMPDES to select location other than \"doc\"" @echo " - dumpstat" @echo " Dump statistic data of current year. Utilizes DUMPDES." @echo " - dumpstatall" @echo " Dump historical statistic data. Utilizes DUMPDES." @echo " - rsync" @echo " Update local database dumps and CFS cloud files from actual live server." @echo " This makes it very easy to populate develop-environment with live data." @echo " - flushlog" @echo " Delete all log files and create empty ones, use in develop-environment only" @echo " - perms" @echo " Setup write permissions for var-folders" @echo " - dirs" @echo " Create var-folders" @echo " - install" @echo " Makes dires and permissions" @echo " - installdb" @echo " Start from scratch. Install empty database" @echo @echo "********************************************************************************" @echo dump: @echo -n "Dump table structure" @mysqldump -u $(DBUSER) --password=$(DBPASSWD) --no-data $(DBNAME) \ | LC_ALL=C sed -E 's/DEFINER[ ]*=[ ]*`[^`]+`@`[^`]+`/DEFINER=CURRENT_USER/g' \ | head -n -1 >$(DUMPDES)/table.sql @echo -n " primary data" @mysqldump -u $(DBUSER) --password=$(DBPASSWD) \ --ignore-table=$(DBNAME).wbgenericview \ --ignore-table=$(DBNAME).wbpageview \ --ignore-table=$(DBNAME).wbsessionview \ --ignore-table=$(DBNAME).wbvfsfileview \ --ignore-table=$(DBNAME).wbcookiepreferences \ $(DBNAME) \ | LC_ALL=C sed -E 's/DEFINER[ ]*=[ ]*`[^`]+`@`[^`]+`/DEFINER=CURRENT_USER/g' \ | head -n -1 >$(DUMPDES)/dump.sql @echo " done" tar: @echo -n "Tar VFS ..." @tar cf vfs.tar var/vfs @echo " done" dumpstat: @$(call dumpDbStat,2025) dumpstatall: dumpstat @$(call dumpDbStat,2024) @$(call dumpDbStat,2023) deploy: @echo "********************************************************************************" git pull make flushcache @echo "********************************************************************************" install: dirs perms installdb: @echo 'SHOW GRANTS FOR `$(DBUSER)`@`localhost`;' @echo 'GRANT USAGE ON *.* TO "$(DBUSER)"@"localhost" IDENTIFIED BY PASSWORD password("$(DBPASSWD)");' @echo 'CREATE DATABASE `$(DBNAME)` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;' @echo 'GRANT ALL PRIVILEGES ON `$(DBNAME)`.* TO `gerd`@`localhost`;' @echo 'FLUSH PRIVILEGES;' @echo 'USE `$(DBNAME)`;' mysql $(DBNAME) <../wombat4/doc/table/base.sql mysql $(DBNAME) <../wombat4/doc/table/dictionary-country.sql mysql $(DBNAME) <../wombat4/doc/table/dictionary-state.sql mysql $(DBNAME) <../wombat4/doc/table/keyvaluepair.sql mysql $(DBNAME) <../wombat4/doc/table/blog.sql mysql $(DBNAME) <../wombat4/doc/table/cms.sql mysql $(DBNAME) <../wombat4/doc/table/vfs.sql mysql $(DBNAME) <../wombat4/doc/table/statistic.sql # mysql $(DBNAME) <../valueAce2/doc/table.sql mysqldump -w 'domain IN ("wombat", "patForms")' wombatDE wbnlsmsg | mysql $(DBNAME) for SQL in doc/table/*.sql; do\ mysql $(DBNAME) <$${SQL};\ done dirs: mkdir -p var/tmp mkdir -p var/cache mkdir -p var/cache/sheet mkdir -p var/log mkdir -p var/spool mkdir -p var/lang mkdir -p var/vfs mkdir -p var/valueace mkdir -p var/archive/invoice perms: chmod -R go+w var/vfs chmod -R go+w var/tmp chmod -R go+w var/tmp chmod -R go+w var/cache chmod -R go+w var/log chmod -R go+w var/spool chmod -R go+w var/lang chmod -R go+w var/archive chmod -R go+w var/valueace flushcache: rm -rf var/cache/css rm -rf var/cache/javascript rm -rf var/cache/general rm -rf var/cache/template rm -rf var/tmp/* rm -rf var/cache/sheet/* flushlog: for i in var/log/*.log ; do rm $$i; touch $$i; chmod go+w $$i; done rsync: rsync --inplace -v $(SERVER):$(SERVER_PARENT)/$(PROJECT)/doc/dump\*.sql $(SERVER):$(SERVER_PARENT)/$(PROJECT)/doc/table.sql doc/ rsync --inplace --delete -av $(SERVER):$(SERVER_PARENT)/$(PROJECT)/var/vfs var/ rsync --inplace --delete -av $(SERVER):$(SERVER_PARENT)/$(PROJECT)/var/valueace var/ rsync --inplace --delete -av $(SERVER):$(SERVER_PARENT)/$(PROJECT)/var/archive var/