mirror of
https://github.com/pyenv/pyenv-update.git
synced 2025-11-13 05:53:47 -05:00
Colorize output
This commit is contained in:
@@ -7,53 +7,66 @@ if [ -z "$PYENV_ROOT" ]; then
|
|||||||
PYENV_ROOT="${HOME}/.pyenv"
|
PYENV_ROOT="${HOME}/.pyenv"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
verify_repo_origin() {
|
REMOTE="${PYENV_REMOTE:-origin}"
|
||||||
local repo="$1"
|
BRANCH="${PYENV_BRANCH:-master}"
|
||||||
( cd "${repo}" && git remote show -n origin 1>/dev/null 2>&1 ) || return 1
|
|
||||||
|
verify_repo_remote() {
|
||||||
|
( cd "$1" && git remote show -n "${REMOTE}" 1>/dev/null 2>&1 )
|
||||||
}
|
}
|
||||||
|
|
||||||
verify_repo_master() {
|
verify_repo_branch() {
|
||||||
local repo="$1"
|
local name="$(cd "$1" && git name-rev --name-only HEAD 2>/dev/null)"
|
||||||
local name="$(cd "${repo}" && git name-rev --name-only HEAD 2>/dev/null)"
|
[[ "${name}" == "${BRANCH}" ]]
|
||||||
[[ "${name}" == "master" ]] || return 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
verify_repo_clean() {
|
verify_repo_clean() {
|
||||||
local repo="$1"
|
! ( cd "$1" && git status --short ) | grep -q -v '^[!?][!?]'
|
||||||
if ( cd "${repo}" && git status --short ) | grep -q -v '^[!?][!?]'; then
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
verify_repo() {
|
verify_repo() {
|
||||||
local repo="$1"
|
local stat=0
|
||||||
if ! verify_repo_origin "${repo}"; then
|
verify_repo_remote "$1" || {
|
||||||
echo "pyenv: ${repo} does not have origin." 1>&2
|
stat="$?"
|
||||||
return 1
|
error "pyenv-update: $1 does not have ${REMOTE}."
|
||||||
fi
|
}
|
||||||
if ! verify_repo_master "${repo}"; then
|
verify_repo_branch "$1" || {
|
||||||
echo "pyenv: ${repo} is not on master branch." 1>&2
|
stat="$?"
|
||||||
return 1
|
error "pyenv-update: $1 is not on ${BRANCH} branch."
|
||||||
fi
|
}
|
||||||
if ! verify_repo_clean "${repo}"; then
|
verify_repo_clean "$1" || {
|
||||||
echo "pyenv: ${repo} is not clean" 1>&2
|
stat="$?"
|
||||||
return 1
|
error "pyenv-update: $1 is not clean"
|
||||||
fi
|
}
|
||||||
|
return "$stat"
|
||||||
}
|
}
|
||||||
|
|
||||||
update_repo() {
|
update_repo() {
|
||||||
local repo="$1"
|
info "Updating $1..."
|
||||||
if ! verify_repo "${repo}"; then
|
verify_repo "$1" &&
|
||||||
return 1
|
( cd "${repo}" && git pull "${REMOTE}" "${BRANCH}" )
|
||||||
fi
|
|
||||||
( cd "${repo}" && git pull origin master )
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
info() {
|
||||||
|
{ printf "\x1B[2;32m"
|
||||||
|
echo "$@"
|
||||||
|
printf "\x1B[0m"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
error() {
|
||||||
|
{ printf "\x1B[1;31m"
|
||||||
|
echo "$@"
|
||||||
|
printf "\x1B[0m"
|
||||||
|
} 1>&2
|
||||||
|
}
|
||||||
|
|
||||||
|
STATUS=0
|
||||||
|
shopt -s nullglob
|
||||||
for repo in "${PYENV_ROOT}" "${PYENV_ROOT}/plugins/"*; do
|
for repo in "${PYENV_ROOT}" "${PYENV_ROOT}/plugins/"*; do
|
||||||
if [ -d "${repo}/.git" ]; then
|
if [ -d "${repo}/.git" ]; then
|
||||||
echo "Updating ${repo}..." 1>&2
|
update_repo "${repo}" || STATUS="$?"
|
||||||
update_repo "${repo}" || exit 1
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
shopt -u nullglob
|
||||||
|
|
||||||
|
exit "$STATUS"
|
||||||
|
|||||||
Reference in New Issue
Block a user