ghq로 관리하는 창고마다 명령을 실행하는 ghq-foreach를 기록합니다

4558 단어 Git
ghq 얻은 창고 전부git pull --ff-only로 만들 수 있다면 git gc 너무 좋아서 기분 좋은 글을 썼어요.
ghq-foreach <git-subcmd>에서는 각 창고에 대해 임의의 하위 명령을 실행할 수 있습니다.-e 추가 옵션ghq-foreach -e <shell-cmd>이 있으면 셸 명령도 사용할 수 있습니다.
여러 줄의 케이스 명령ghq-foreach -e sh -c 'cmd1; cmd2'이라면
ghq-foreach.sh
#!/bin/bash

#
# ghq-foreach - executes git subcmd or shell cmd for each repo managed by ghq
#

EXEC=
QUIET=

say() {
    [[ -n "$QUIET" ]] && return
    if [[ -t 1 ]]; then
        printf '\e[1;34m%s\e[m\n' "$1"
    else
        printf '%s\n' "$1"
    fi
}

main() {
    if [[ "$1" = "-q" ]]; then
        QUIET=1
        shift
    fi
    if [[ "$1" = "-e" ]]; then
        EXEC=1
        shift
    fi

    if [[ "$#" -eq 0 ]]; then
        echo "usage: ghq-foreach [-q] (<git-cmd> | -e <shell-cmd>) [args...]" >&2
        echo "    -e  Execute shell command" >&2
        echo "    -q  Don't print each repository path" >&2
        return 1
    fi

    ghq list -p | while read -r repo; do
        (
            cd "$repo"
            say "> $repo"
            if [[ -n "$EXEC" ]]; then
                "$@"
            else
                git "$@"
            fi
        )
    done
}

main "$@"

좋은 웹페이지 즐겨찾기