Tools
GNU social provides some tools to aid developers. Most of the more
common ones can be accessed with the make
command, for the
corresponding Makefile
. These tools range from giving you acess to a
shell in the PHP docker container, a repl in the application
environment, a PostgreSQL shell, running PHPStan, among others.
Pre Commit Hooks
A git
pre-commit
hook is provided, which gets installed when
composer install
is run. This hook is responsible for running
multiple things that aid in maintaing code quality.
Specifically, we have setup:
- PHP Code Style fixer
- PHP Documenation Checker
- PHPStan
These can be disabled for a given commit by prepending the command
with one of SKIP_CS_FIX
, SKIP_DOC_CHECK
, SKIP_PHPSTAN
or
SKIP_ALL
, to disable the corresponding step.
Example
SKIP_PHPSTAN=1 git commit
These should be used sparingly, but they're primarily useful for work in process commits and when rebasing.
Make
Check the Makefile
for an up to date list of commands available, but
notable ones include:
php-shell
- A shell in the PHP docker container, where you can run commands from thebin
folder (see below) orcomposer
php-repl
- A REPL in the context of the application, allowing you to run function for testing. Note that this requires explicitly importing the needed classes withuse Class;
like in a regular filepsql-shell
- A PostgreSQL shell, if you need to edit the database contents manuallydatabase-force-schema-update
- If some entity changed, run this to add/remove/update any missing fieldstest
- Run PHPUnit testsphpstan
- Run PHPStan
These can be run by using make php-repl
, or the desired command
Bin
In addition, some useful scripts are provided in the bin/
directory.
Typically, these should be run inside the Docker container. This can
be done by running make php-shell
Specifically:
bin/console
- The Symfony consolebin/generate_entity_fields
- Update autogenerated entity code. Must be run after changing database definitions, i.e. when altering theschemaDef
static method in a class that extendsEntity
Check the Symfony Console reference for details on available commands.
In addition to those, we have added app:events
, which lists the
application events and their handlers and can be invoked as
bin/console app:event