62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
 | |
| source "$(dirname -- "$0")/../load.sh" || exit 1
 | |
| require: git
 | |
| 
 | |
| function git_status() {
 | |
|     local status r cwd
 | |
|     status="$(git status "$@" 2>&1)"; r=$?
 | |
|     if [ -n "$status" ]; then
 | |
|         setx cwd=ppath2 "$(pwd)" "$OrigCwd"
 | |
|         etitle "$cwd"
 | |
|         if [ $r -eq 0 ]; then
 | |
|             echo "$status"
 | |
|         else
 | |
|             eerror "$status"
 | |
|         fi
 | |
|         eend
 | |
|     fi
 | |
| }
 | |
| 
 | |
| chdir=
 | |
| all=
 | |
| args=(
 | |
|     "afficher l'état du dépôt"
 | |
|     "[-d chdir] [-a patterns...]
 | |
| 
 | |
| Si l'option -a est utilisée, ce script accepte comme arguments une liste de patterns permettant de filtrer les répertoires concernés"
 | |
|     -d:,--chdir:BASEDIR chdir= "répertoire dans lequel se placer avant de lancer les opérations"
 | |
|     -a,--all all=1 "faire l'opération sur tous les sous-répertoires de BASEDIR qui sont des dépôts git"
 | |
| )
 | |
| parse_args "$@"; set -- "${args[@]}"
 | |
| 
 | |
| setx OrigCwd=pwd
 | |
| if [ -n "$chdir" ]; then
 | |
|     cd "$chdir" || die
 | |
| fi
 | |
| 
 | |
| if [ -n "$all" ]; then
 | |
|     # liste de sous répertoires
 | |
|     if [ $# -gt 0 ]; then
 | |
|         # si on a une liste de patterns, l'utiliser
 | |
|         setx -a dirs=ls_dirs . "$@"
 | |
|     else
 | |
|         dirs=()
 | |
|         for dir in */.git; do
 | |
|             [ -d "$dir" ] || continue
 | |
|             dirs+=("${dir%/.git}")
 | |
|         done
 | |
|     fi
 | |
|     setx cwd=pwd
 | |
|     for dir in "${dirs[@]}"; do
 | |
|         cd "$dir" || die
 | |
|         git_status --porcelain
 | |
|         cd "$cwd"
 | |
|     done
 | |
| else
 | |
|     # répertoire courant uniquement
 | |
|     args=()
 | |
|     isatty || args+=(--porcelain)
 | |
|     git_status "${args[@]}"
 | |
| fi
 |