Newer
Older
bibcnrs / Makefile
@join join on 29 Jan 5 KB first commit
# 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