From 273e75652109b4947b0924e44f6142812452c909 Mon Sep 17 00:00:00 2001 From: julien Date: Thu, 8 Oct 2026 15:40:10 +0200 Subject: [PATCH] first commit --- README.md | 56 ++++++++++++++++++++++++++++++++++++++++++++ bin/tools-git-update | 16 +++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 README.md create mode 100755 bin/tools-git-update diff --git a/README.md b/README.md new file mode 100644 index 0000000..4d223df --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +# Tools + +Quelques outils personnels en Ruby. + +## Installation + +Clonez le dépôt, par exemple dans `~/src/tools` : + +```sh +git clone ~/src/tools +``` + +Ajoutez ensuite le dossier `bin` au `PATH` dans `~/.bash_profile` : + +```sh +export PATH="$HOME/src/tools/bin:$PATH" +``` + +Puis ouvrez une nouvelle session ou rechargez le fichier : + +```sh +source ~/.bash_profile +``` + +## tools-git-update + +`tools-git-update` parcourt uniquement les sous-dossiers directs du dossier courant et exécute : + +```sh +git pull --ff-only +``` + +dans chaque sous-dossier contenant un dépôt Git. + +Le script ne descend pas récursivement dans les sous-dossiers. + +Git effectue la mise à jour uniquement si une avance rapide (*fast-forward*) est possible. En cas de divergence ou d'échec de la commande, le dépôt n'est pas fusionné automatiquement et le script affiche un avertissement. + +### Utilisation + +Placez-vous dans le dossier contenant les dépôts à mettre à jour : + +```sh +cd ~/src +tools-git-update +``` + +Exemple d'organisation : + +```text +~/src/ +├── easy-slack/ +├── ecarte/ +├── geckobreizh/ +└── tools/ +``` diff --git a/bin/tools-git-update b/bin/tools-git-update new file mode 100755 index 0000000..1bf277b --- /dev/null +++ b/bin/tools-git-update @@ -0,0 +1,16 @@ +#!/usr/bin/env ruby + +Dir.children(Dir.pwd).sort.each do |entry| + path = File.join(Dir.pwd, entry) + + next unless File.directory?(path) + next unless File.exist?(File.join(path, ".git")) + + puts "\n==> #{entry}" + + Dir.chdir(path) do + unless system("git", "pull", "--ff-only") + warn "Attention : #{entry} n'a pas été mis à jour." + end + end +end