@@ -64,3 +64,44 @@ Alla fine di questo mestiere, si dovrebbe avere una base di codice essenzialment
# Struttura delle directory di Wordpress
Composer non è contento di spacchettare due dipendenze nella stessa directory. Quindi separa wordpress-core in ```app/wp```, mentre c'è un ```app/wp-content``` dove vengono spachettati i vari temi/plugins/etc. Bisognerà fare dei magheggi per riscrivere le URL. [Vedi qui](https://www.smashingmagazine.com/2019/03/composer-wordpress/) e [qui](https://roots.io/docs/bedrock/master/server-configuration/#apache-configuration-for-bedrock).
# Come dovrebbe funzionare a regime
Una volta finita la attuale transizione, questo repository dovrebbe funzionare come segue. I contenuti della directory ```app``` (e anche ```mu-plugins-src```) devono essere generati da ```composer```. Quindi eventuali modifiche non vanno committate.
## Aggiornamenti
Per aggiornare alla ultima versione di wordpress/plugin/temi, si usa il comando
``` shell
composer update
```
## Aggiungere componenti
Per aggiungere un nuovo tema/plugin dal repository wpackagist, si usa
``` shell
composer require wpackagist-[theme|plugin]/[..]
```
Se invece vogliamo aggiungere un pacchetto scritto da noi, prima dobbiamo aggiungere l'indirizzo del repository (questo almeno fino a quando Gitlab non implementi il repository per i pacchetti composer), aggiungendo in ```composer.json``` alla lista dei repository un repository di tipo ```vcs```, per esempio
``` json
"repositories": [
{
"type": "vcs",
"url": "git@git.autistici.org:lucha/r2db.git"
}
]
```
Se il repository che includiamo ha delle tag di versione del tipo ```vX.Y.Z``` (dove X, Y, Z sono numeri, per esempio "v1.2" o "v4.0.1"), allora ```composer``` sa cosa fare (prendere l'ultima versione disponibile di default). Altrimenti, dobbiamo dirgli di prendere la versione del branch master (o qualsiasi altro branch), con
``` shell
composer require --dev lucha/r2db:dev-master
```
## Creare patches
Le patch in ```patches/``` si possono generate ed aggiornare usando ```git```. Infatti, possiamo fare delle modifiche in ```app/``` e transformarle in un file patch con
``` shell
git diff >> patches/nomepatch.patch
```
ricordandosi che ogni file di patch può modificare solo un singolo tema/plugin.