# If the first argument is one of the supported commands... SUPPORTED_COMMANDS := restore-db _restore_db restore-db-dev _restore_db_dev SUPPORTS_MAKE_ARGS := $(findstring $(firstword $(MAKECMDGOALS)), $(SUPPORTED_COMMANDS)) ifneq "$(SUPPORTS_MAKE_ARGS)" "" # use the rest as arguments for the command COMMAND_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) # ...and turn them into do-nothing targets $(eval $(COMMAND_ARGS):;@:) endif # Build and development command clone-front: git clone https://github.com/BibCnrs/bibcnrs-front.git clone-api: git clone -b v4 https://github.com/BibCnrs/BibApi.git bibcnrs-api clone-admin: git clone -b v4 https://github.com/BibCnrs/BibAdmin.git bibcnrs-admin update-front: cd bibcnrs-front && \ git pull && \ cd .. update-api: cd bibcnrs-api && \ git pull && \ cd .. update-admin: cd bibcnrs-admin && \ git pull && \ cd .. update-aio: git pull install-front: cd bibcnrs-front && \ make install && \ cd .. install-api: cd bibcnrs-api && \ make install && \ cd .. install-admin: cd bibcnrs-admin && \ make install && \ cd .. build-front: cd bibcnrs-front && \ make build && \ cd .. build-api: cd bibcnrs-api && \ make build && \ cd .. build-admin: cd bibcnrs-admin && \ make build && \ cd .. clone: clone-front clone-api clone-admin update: update-front update-api update-admin update-aio push-latest-docker-image: docker push vxnexus-registry.intra.inist.fr:8083/bibcnrs/front:latest docker push vxnexus-registry.intra.inist.fr:8083/bibcnrs/api:latest docker push vxnexus-registry.intra.inist.fr:8083/bibcnrs/admin:latest build: build-front build-api build-admin install: install-front install-api install-admin build-push-preprod-inist: make build docker push vxnexus-registry.intra.inist.fr:8083/bibcnrs/front:preprod-inist-latest docker push vxnexus-registry.intra.inist.fr:8083/bibcnrs/api:preprod-inist-latest docker push vxnexus-registry.intra.inist.fr:8083/bibcnrs/admin:preprod-inist-latest cleanup-dev-docker: ## remove all bibcnrs-front docker image test -z "$$(docker ps -a | grep bibcnrs-dev)" || \ docker rm --force $$(docker ps -a | grep bibcnrs-dev | awk '{ print $$1 }') run-dev: make cleanup-dev-docker docker compose -f docker-compose.dev.yml up --force-recreate save-db-dev: ## create postgres dump for prod database in backups directory with given name or default to current date docker exec bibcnrs-dev-api-postgres bash -c 'PGPASSWORD=secret pg_dump --username postgres bibapi-dev > /backups/$(shell date +%Y_%m_%d_%H_%M_%S).sql' restore-db-dev: ## restore a given dump to the postgres database list all dump if none specified ifdef COMMAND_ARGS @make _pre_restore_db_dev @make _restore_db_dev $(COMMAND_ARGS) @make _post_restore_db_dev else echo 'please specify backup to restore': @ls -h ./backups endif _pre_restore_db_dev: docker compose -f docker-compose.dev.yml stop docker compose -f docker-compose.dev.yml start bibcnrs-dev-api-postgres _post_restore_db_dev: docker compose -f docker-compose.dev.yml stop _restore_db_dev: docker exec bibcnrs-dev-api-postgres bash -c 'PGPASSWORD=secret dropdb --username postgres bibapi-dev' docker exec bibcnrs-dev-api-postgres bash -c 'PGPASSWORD=secret createdb --username postgres bibapi-dev' || true docker exec bibcnrs-dev-api-postgres bash -c 'ls && psql -f /backups/$(COMMAND_ARGS) postgres://postgres:secret@bibcnrs-dev-api-postgres:5432/bibapi-dev' cleanup-admin-docker: ## remove all bibcnrs-front docker image test -z "$$(docker ps -a | grep bibcnrs-admin)" || \ docker rm --force $$(docker ps -a | grep bibcnrs-front | awk '{ print $$1 }') cleanup-api-docker: ## remove all bibcnrs-front docker image test -z "$$(docker ps -a | grep bibcnrs-api)" || \ docker rm --force $$(docker ps -a | grep bibcnrs-front | awk '{ print $$1 }') cleanup-front-docker: ## remove all bibcnrs-front docker image test -z "$$(docker ps -a | grep bibcnrs-front)" || \ docker rm --force $$(docker ps -a | grep bibcnrs-front | awk '{ print $$1 }') cleanup-docker: cleanup-admin-docker cleanup-api-docker cleanup-front-docker create-test-alert: ## args: <user uid> create alert for every search in <user> history docker exec -it bibcnrs-dev-api node bin/createAlertForTest.js $(COMMAND_ARGS) search_alert_dev: ## search alert cron command docker exec bibcnrs-dev-api node bin/searchAlert.js # Production command start: docker compose up -d stop: docker compose down search_alert: ## search alert cron command docker exec bibcnrs-api node bin/searchAlert.js clear_history: ## Clear search history entries older than 2 months docker exec bibcnrs-api node ./bin/cleanOldHistoryEntries.js save-db: ## create postgres dump for prod database in backups directory with given name or default to current date docker exec bibcnrs-api-postgres bash -c 'PGPASSWORD=$$POSTGRES_PASSWORD pg_dump --username $$POSTGRES_USER $$POSTGRES_DB > /backups/$(shell date +%Y_%m_%d_%H_%M_%S).sql' _pre_restore_db: docker compose -f docker-compose.yml stop docker compose -f docker-compose.yml start bibcnrs-api-postgres _post_restore_db: docker compose -f docker-compose.yml stop _restore_db: save-db docker exec bibcnrs-api-postgres bash -c 'PGPASSWORD=$$POSTGRES_PASSWORD dropdb --username $$POSTGRES_USER $$POSTGRES_DB' docker exec bibcnrs-api-postgres bash -c 'PGPASSWORD=$$POSTGRES_PASSWORD createdb --username $$POSTGRES_USER $$POSTGRES_DB' || true docker exec bibcnrs-api-postgres bash -c 'psql -f /backups/$(COMMAND_ARGS) postgres://$$POSTGRES_USER:$$POSTGRES_PASSWORD@bibcnrs-api-postgres:5432/$$POSTGRES_DB' restore-db: ## restore a given dump to the postgres database list all dump if none specified ifdef COMMAND_ARGS @make _pre_restore_db @make _restore_db $(COMMAND_ARGS) @make _post_restore_db_dev else echo 'please specify backup to restore': @ls -h ./backups endif