Makefile 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. DIR=$(strip $(notdir $(CURDIR))) # Seems a bit hack-ish, but `basename` works differently
  2. translate-container-name = $$(if docker container inspect $(1) > /dev/null 2>&1; then echo $(1); else echo $(1) | sed 'y/_/-/' ; fi)
  3. args = `arg="$(filter-out $@,$(MAKECMDGOALS))" && echo $${arg:-${1}}`
  4. %:
  5. @:
  6. .PHONY:
  7. @if ! docker info > /dev/null; then echo "Docker does not seem to be running"; exit 1; fi
  8. up: .PHONY
  9. docker-compose up -d
  10. down: .PHONY
  11. docker-compose down
  12. redis-shell:
  13. docker exec -it $(call translate-container-name,$(strip $(DIR))_redis_1) sh -c 'redis-cli'
  14. php-repl: .PHONY
  15. docker exec -it $(call translate-container-name,$(strip $(DIR))_php_1) sh -c '/var/www/social/bin/console psysh'
  16. php-shell: .PHONY
  17. docker exec -it $(call translate-container-name,$(strip $(DIR))_php_1) sh -c 'cd /var/www/social; sh'
  18. psql-shell: .PHONY
  19. docker exec -it $(call translate-container-name,$(strip $(DIR))_db_1) sh -c "psql -U postgres social"
  20. database-force-nuke:
  21. docker stop $(call translate-container-name,$(strip $(DIR))_worker_1) \
  22. && docker exec -it $(call translate-container-name,$(strip $(DIR))_php_1) sh -c "cd /var/www/social; bin/console doctrine:database:drop --force && bin/console doctrine:database:create && bin/console doctrine:schema:update --dump-sql --force && bin/console app:populate_initial_values" \
  23. && docker-compose up -d
  24. database-force-schema-update:
  25. docker exec -it $(call translate-container-name,$(strip $(DIR))_php_1) sh -c "/var/www/social/bin/console doctrine:schema:update --dump-sql --force"
  26. tooling-docker-up: .PHONY
  27. @sh -c 'if [ ! docker container inspect $(call translate-container-name,tooling_php_1) > /dev/null 2>&1 ]; then cd docker/tooling && docker-compose up -d --build > /dev/null 2>&1; fi'
  28. tooling-docker-down: .PHONY
  29. cd docker/tooling && docker-compose down
  30. test: tooling-docker-up
  31. @docker exec $(call translate-container-name,tooling_php_1) /var/tooling/coverage.sh $(call args,'')
  32. test-database-force-nuke: tooling-docker-up
  33. docker exec -it $(call translate-container-name,tooling_php_1) sh -c 'cd /var/www/social; bin/console doctrine:database:drop --force'
  34. tooling-php-shell: tooling-docker-up
  35. docker exec -it $(call translate-container-name,tooling_php_1) sh
  36. test-accesibility: tooling-docker-up
  37. cd docker/tooling && docker-compose run pa11y /accessibility.sh
  38. cs-fixer: tooling-docker-up
  39. @bin/php-cs-fixer $${CS_FIXER_FILE}
  40. doc-check: tooling-docker-up
  41. bin/php-doc-check
  42. phpstan: tooling-docker-up
  43. bin/phpstan
  44. remove-var:
  45. rm -rf var/*
  46. remove-file:
  47. sudo rm -rf file/*
  48. flush-redis-cache:
  49. docker exec -it $(call translate-container-name,$(strip $(DIR))_redis_1) sh -c 'redis-cli flushall'
  50. install-plugins:
  51. docker exec -it $(call translate-container-name,$(strip $(DIR))_php_1) /var/www/social/bin/install_plugins.sh
  52. update-dependencies:
  53. docker exec -it $(call translate-container-name,$(strip $(DIR))_php_1) sh -c 'cd /var/www/social && composer update'
  54. update-autocode:
  55. docker exec -it $(call translate-container-name,$(strip $(DIR))_php_1) sh -c 'cd /var/www/social && bin/update_autocode'
  56. backup-actors:
  57. docker exec -it $(call translate-container-name,$(strip $(DIR))_db_1) \
  58. sh -c 'su postgres -c "mkdir -p /tmp/backup"' && \
  59. docker exec -it $(call translate-container-name,$(strip $(DIR))_php_1) \
  60. sh -c "cd /var/www/social && bin/console doctrine:query:sql \"\
  61. copy actor to '/tmp/backup/actor.csv';\
  62. copy local_user to '/tmp/backup/local_user.csv';\
  63. copy local_group to '/tmp/backup/local_group.csv';\
  64. \
  65. copy activitypub_actor to '/tmp/backup/ap_actor.csv';\
  66. copy activitypub_rsa to '/tmp/backup/ap_rsa.csv';\
  67. \
  68. copy actor_subscription to '/tmp/backup/actor_subscription.csv';\
  69. copy group_member to '/tmp/backup/group_member.csv';\
  70. \
  71. copy feed to '/tmp/backup/feed.csv';\
  72. copy (SELECT 'ALTER SEQUENCE ' || c.relname || ' RESTART WITH ' || nextval(c.relname::regclass) || ';'\
  73. FROM pg_class c WHERE c.relkind = 'S') to '/tmp/backup/sequences';\"" && \
  74. mkdir -p /tmp/social-sql-backup && \
  75. docker cp $(call translate-container-name,$(strip $(DIR))_db_1):/tmp/backup/. /tmp/social-sql-backup
  76. restore-actors:
  77. docker cp /tmp/social-sql-backup/. $(call translate-container-name,$(strip $(DIR))_db_1):/tmp/backup
  78. docker exec -it $(call translate-container-name,$(strip $(DIR))_db_1) sh -c 'chown postgres /tmp/backup' && \
  79. docker exec -it $(call translate-container-name,$(strip $(DIR))_php_1) \
  80. sh -c "cd /var/www/social && bin/console doctrine:query:sql \"\
  81. copy actor from '/tmp/backup/actor.csv';\
  82. copy local_user from '/tmp/backup/local_user.csv';\
  83. copy local_group from '/tmp/backup/local_group.csv';\
  84. \
  85. copy activitypub_actor from '/tmp/backup/ap_actor.csv';\
  86. copy activitypub_rsa from '/tmp/backup/ap_rsa.csv';\
  87. \
  88. copy actor_subscription from '/tmp/backup/actor_subscription.csv';\
  89. copy group_member from '/tmp/backup/group_member.csv';\
  90. \
  91. copy feed from '/tmp/backup/feed.csv';\
  92. `cat /tmp/social-sql-backup/sequences`\""
  93. force-nuke-everything: down remove-var remove-file up flush-redis-cache database-force-nuke install-plugins
  94. force-delete-content: backup-actors force-nuke-everything restore-actors