diff --git a/cx-updatedev b/cx-updatedev index b43f4c6..90ae897 100755 --- a/cx-updatedev +++ b/cx-updatedev @@ -17,25 +17,49 @@ OPTIONS Afficher simplement ce qui serait fait -q, --quiet Ne pas lancer rsync en mode verbose + --rsync + Mettre à jour les répertoires dans vendor/ qui ne sont pas des liens + symboliques à partir des projets dépendants correspondants. Les liens + symboliques créés avec --link sont ignorés. C'est l'option par défaut. -l, --link - Transformer les clones de dépôts en liens directs vers les projets + Transformer les clones de dépôts dans vendor/ en liens symboliques vers + les projets dépendants correpondants. -k, --copy - Transformer les liens directs vers les projets en copies des projets + Transformer les liens symboliques dans vendor/ en copies des projets + dépendants correspondants. Les répertoires qui ne sont pas des liens + symboliques sont ignorés. + Cette option peut être considérée comme le contraire de --link -i, --install - Supprimer les répertoires et les faire recréer par composer i + Supprimer les répertoires des projets dépendants dans vendor/, qu'il + s'agisse de liens symboliques ou de répertoires normaux, puis les faire + recréer par 'composer i' + Celà permet de ramener le projet à l'état original. -j, --reinstall-link - Supprimer les répertoires et les faire recréer par composer i, - uniquement s'il s'agit de liens + Supprimer les répertoires des projets dépendants dans vendor/ s'il + s'agit de liens symboliques, puis les faire recréer par 'composer i' + Cette variante est plus rapide que --install puisqu'on ne cherche pas à + tout recréer. -u, --update - Supprimer les répertoires et les faire recréer par composer u - --ru, --recursive-update + Supprimer les répertoires des projets dépendants dans vendor/, qu'il + s'agisse de liens symboliques ou de répertoires normaux, puis les faire + recréer par 'composer u' + Celà permet de mettre à jour le projet sans les erreurs qui résultent + des modifications faites par les autres actions. + -w, --update-commit + Mettre à jour le projet avec --update puis enregistrer les modifications + éventuelles dans git + --ud, --update-deps + Mettre à jour les projets dépendants avec --update-commit avant de + mettre à jour le projet courant. + --ur, --update-recursive Mettre à jour de façon récursive tous les projets dépendants. - NB: les modifications seront automatiquement enregistrées dans git." + NB: les modifications dans les projets dépendants seront automatiquement + enregistrées dans git." } fake= verbose=1 -action= +action=rsync args=( --help '$exit_with display_help' -d:,--project-dir: projdir= @@ -46,7 +70,9 @@ args=( -i,--install action=install -j,--reinstall-link action=reinstall-link -u,--update action=update - --ru,--recursive-update action=recursive-update + -w,--update-commit action=update-commit + --ud,--update-deps action=update-deps + --ur,--update-recursive action=update-recursive ) parse_args "$@"; set -- "${args[@]}" @@ -74,12 +100,13 @@ if [ -z "$first" ]; then fi case "$action" in -install|update|reinstall-link|recursive-update) +install|reinstall-link|update|update-commit|update-deps|update-recursive) [ -x ./composer.phar ] || die "Impossible de trouver composer.phar" ;; esac -if [ "$action" == recursive-update ]; then - # avec recursive-update, tous les modules doivent être considérés +if [ "$action" == update-deps -o "$action" == update-recursive ]; then + # avec update-deps et update-recursive, tous les modules doivent être + # considérés set -- fi @@ -119,6 +146,14 @@ for m in "$@"; do check_module case "$action" in + rsync) + # Action par défaut: ignorer les liens et synchroniser les copies + if [ ! -L "vendor/$p" ]; then + etitle "$m" + update_with_rsync + eend + fi + ;; link) # Ignorer les liens et transformer les copies en liens if [ ! -L "vendor/$p" ]; then @@ -160,7 +195,7 @@ for m in "$@"; do array_add deps "$p" eend ;; - reinstall-link|recursive-update) + reinstall-link) # Supprimer les liens uniquement... etitle "$m" if [ -L "vendor/$p" ]; then @@ -170,7 +205,7 @@ for m in "$@"; do array_add deps "$p" eend ;; - update) + update|update-commit|update-deps|update-recursive) # Supprimer les liens et répertoires... etitle "$m" if [ -e "vendor/$p" ]; then @@ -180,38 +215,49 @@ for m in "$@"; do array_add deps "$p" eend ;; - *) - # Action par défaut: ignorer les liens et synchroniser les copies - if [ ! -L "vendor/$p" ]; then - etitle "$m" - update_with_rsync - eend - fi - ;; + *) die "$action: action inconnue";; esac done case "$action" in install|reinstall-link) # ... puis installer les dépendances - etitle "Installation des dépendances" + estep "Installation des dépendances" ./composer.phar i - eend ;; -update) +update|update-commit) # ... puis mettre à jour les dépendances - etitle "Mise à jour des dépendances" + estep "Mise à jour des dépendances" ./composer.phar u "${deps[@]}" - eend + + if [ "$action" == update-commit ]; then + estep "Enregistrement dans git" + pci -A "maj deps" + fi ;; -recursive-update) - # mettre à jour les dépendances de façon récursives +update-deps) + # mettre à jour les dépendances directes for m in "${modules[@]}"; do - etitle "Mise à jour récursive: $m" - "$script" -d "../$m" --ru + etitle "Mise à jour projet dépendant: $m" + "$script" -d "../$m" -w eend done - estep "Maj deps" + + estep "Mise à jour des dépendances" + ./composer.phar u + + estep "Enregistrement dans git" + pci -A "maj deps" + ;; +update-recursive) + # mettre à jour les dépendances de façon récursive + for m in "${modules[@]}"; do + etitle "Mise à jour récursive: $m" + "$script" -d "../$m" --ur + eend + done + + estep "Mise à jour des dépendances" ./composer.phar u estep "Enregistrement dans git"