New file |
0,0 → 1,49 |
#!/bin/bash |
# @author Raphaël Droz <raphael@tela-botanica.org> |
# @license GPL v3 <http://www.gnu.org/licenses/gpl.txt> |
# @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt> |
# @copyright © 2013, Tela Botanica |
|
# Met à jour les appels à la database via l'instance $this de Cel |
# pour y substituer le singleton Cel::db() |
# À lancer dans le répertoire racine. |
|
# fichiers à traiter (dans jrest/) |
fichiers=$(grep -rl 'extends Cel' jrest) |
|
# liste des fonctions à substituer, obtenue à partir de: |
# grep -A1 'delete wrappers' jrest/lib/Cel.php |grep 'function.*()'|awk -F '[ (]' '{print $3}' |
wrappers=( requeter executer protegerRequete proteger executerRequeteSimple executerRequete getTxt ) |
chaine=$(export IFS='|'; echo "${wrappers[*]}"); |
|
|
# Les fichiers qui définissent ou redéfinissent l'une de ces fonctions doivent être modifiés à la main |
# car il est légitime pour eux d'utiliser $this |
a_exclure=$(grep -rEl "function ($chaine)\(" jrest) |
# (ils représentent 10 occurences du pattern) |
# en réalité les fichiers dans scripts/ n'ont pas besoin d'être modifiés |
|
# la liste refiltrée des fichiers |
fichiers=$(echo "$fichiers"|fgrep -v -f <(echo "$a_exclure")) |
echo -e "a modifier manuellement:\n$a_exclure" >&2 |
|
|
# 3 backslashes: |
# 1 pour ne pas interpréter $this par bash entre les "" |
# 1 autre en tant que simple bashslash (donc doublé) pour éviter que sed ne considère '$' comme fin de ligne |
|
# Première regexp: |
# 0 substitutions, car seuls les fichiers dans scripts/ l'utilisent |
# or ils n'étendent pas la classe Cel |
# sed -E "s;\\\$this->bdd->($chaine)\(;Cel::db()->\1(;g" $fichiers |
|
# Seconde regexp |
# 489 substitutions: |
# sed -nE "s;\\\$this->($chaine)\(;Cel::db()->\1(;gp" $fichiers |
sed -i -E "s;\\\$this->($chaine)\(;Cel::db()->\1(;g" $fichiers |
|
|
# Troisième passe: substitution de $this->bdd->quote() |
# 25 substitutions |
fichiers_quote=$(grep -rl '$this->bdd->quote(' jrest/services) |
sed -i -E 's;\$this->bdd->quote\(;Cel::db()->quote(;g' $fichiers_quote |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |
Added: svn:eol-style |
+native |
\ No newline at end of property |