Add a data transfer object that stores the source file name, the file
name to generate and an optional path to create for each file to
generate.
As I'm using a `readonly` class for the DTO, this required updating PHP
to 8.2.
nix develop --command php bin/build-configs run
Allow for changing the default database name, username and password from
`drupal` to `app` by enabling the
`experimental.useNewDatabaseCredentials` feature flag in a project's
`build.yaml` file.
Refs: OD-27
Add a `phpunit` recipe for running PHPUnit tests, with a `test` alias
that could later be used for running Pest in PHP projects or Jest in a
node project.
Allow for declaring extra databases that should be created when the
project is first started. This is done by adding an `extra_databases`
key to `database`, containing a list of database names.
```yaml
database:
type: mariadb
version: 10
extra_databases:
- tinhat
- freshcover
```
Some projects don't use a docroot/web/public directory so this needs be
able to be set to `null`. As I can't do this with Twig's `is not
defined` test, I'll need to remove the default `web` value and add it to
the build.yaml file for the appropriate projects.
If I can get this to work in the future, I'll re-add `web` as the
default value as that's the default and most common option.
As well as commands that are run by the `app` user, also specify
commands that should be run by the `root` user such as updating the
`DocumentRoot` within an Apache virtual host.
Allow for overriding the project root from `/app` to something else,
such as `/var/www/html`.
The default is set within a new `build.defaults.yaml` file which the
project specific file is merged into.
Fixes#27