1723 |
raphael |
1 |
#!/bin/bash
|
|
|
2 |
# @author Raphaël Droz <raphael@tela-botanica.org>
|
|
|
3 |
# @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
|
|
|
4 |
# @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
|
|
|
5 |
# @copyright © 2013, Tela Botanica
|
|
|
6 |
|
|
|
7 |
# Met à jour les appels à la database via l'instance $this de Cel
|
|
|
8 |
# pour y substituer le singleton Cel::db()
|
|
|
9 |
# À lancer dans le répertoire racine.
|
|
|
10 |
|
|
|
11 |
# fichiers à traiter (dans jrest/)
|
|
|
12 |
fichiers=$(grep -rl 'extends Cel' jrest)
|
|
|
13 |
|
|
|
14 |
# liste des fonctions à substituer, obtenue à partir de:
|
|
|
15 |
# grep -A1 'delete wrappers' jrest/lib/Cel.php |grep 'function.*()'|awk -F '[ (]' '{print $3}'
|
|
|
16 |
wrappers=( requeter executer protegerRequete proteger executerRequeteSimple executerRequete getTxt )
|
|
|
17 |
chaine=$(export IFS='|'; echo "${wrappers[*]}");
|
|
|
18 |
|
|
|
19 |
|
|
|
20 |
# Les fichiers qui définissent ou redéfinissent l'une de ces fonctions doivent être modifiés à la main
|
|
|
21 |
# car il est légitime pour eux d'utiliser $this
|
|
|
22 |
a_exclure=$(grep -rEl "function ($chaine)\(" jrest)
|
|
|
23 |
# (ils représentent 10 occurences du pattern)
|
|
|
24 |
# en réalité les fichiers dans scripts/ n'ont pas besoin d'être modifiés
|
|
|
25 |
|
|
|
26 |
# la liste refiltrée des fichiers
|
|
|
27 |
fichiers=$(echo "$fichiers"|fgrep -v -f <(echo "$a_exclure"))
|
|
|
28 |
echo -e "a modifier manuellement:\n$a_exclure" >&2
|
|
|
29 |
|
|
|
30 |
|
|
|
31 |
# 3 backslashes:
|
|
|
32 |
# 1 pour ne pas interpréter $this par bash entre les ""
|
|
|
33 |
# 1 autre en tant que simple bashslash (donc doublé) pour éviter que sed ne considère '$' comme fin de ligne
|
|
|
34 |
|
|
|
35 |
# Première regexp:
|
|
|
36 |
# 0 substitutions, car seuls les fichiers dans scripts/ l'utilisent
|
|
|
37 |
# or ils n'étendent pas la classe Cel
|
|
|
38 |
# sed -E "s;\\\$this->bdd->($chaine)\(;Cel::db()->\1(;g" $fichiers
|
|
|
39 |
|
|
|
40 |
# Seconde regexp
|
|
|
41 |
# 489 substitutions:
|
|
|
42 |
# sed -nE "s;\\\$this->($chaine)\(;Cel::db()->\1(;gp" $fichiers
|
|
|
43 |
sed -i -E "s;\\\$this->($chaine)\(;Cel::db()->\1(;g" $fichiers
|
1726 |
raphael |
44 |
|
|
|
45 |
|
|
|
46 |
# Troisième passe: substitution de $this->bdd->quote()
|
|
|
47 |
# 25 substitutions
|
|
|
48 |
fichiers_quote=$(grep -rl '$this->bdd->quote(' jrest/services)
|
|
|
49 |
sed -i -E 's;\$this->bdd->quote\(;Cel::db()->quote(;g' $fichiers_quote
|