mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-11-17 19:30:10 +00:00
feat(update): allow updating from branch set up on install
Closes #8788 Co-authored-by: Nikolas Garofil <nikolas@garofil.be>
This commit is contained in:
parent
7ded6752fd
commit
098bcda691
2 changed files with 37 additions and 22 deletions
|
@ -53,7 +53,7 @@ KEEP_ZSHRC=${KEEP_ZSHRC:-no}
|
||||||
|
|
||||||
|
|
||||||
command_exists() {
|
command_exists() {
|
||||||
command -v "$@" >/dev/null 2>&1
|
command -v "$@" >/dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt_error() {
|
fmt_error() {
|
||||||
|
@ -65,27 +65,27 @@ fmt_underline() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt_code() {
|
fmt_code() {
|
||||||
# shellcheck disable=SC2016 # backtic in single-quote
|
# shellcheck disable=SC2016 # backtick in single-quote
|
||||||
printf '`\033[38;5;247m%s%s`\n' "$*" "$RESET"
|
printf '`\033[38;5;247m%s%s`\n' "$*" "$RESET"
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_color() {
|
setup_color() {
|
||||||
# Only use colors if connected to a terminal
|
# Only use colors if connected to a terminal
|
||||||
if [ -t 1 ]; then
|
if [ -t 1 ]; then
|
||||||
RED=$(printf '\033[31m')
|
RED=$(printf '\033[31m')
|
||||||
GREEN=$(printf '\033[32m')
|
GREEN=$(printf '\033[32m')
|
||||||
YELLOW=$(printf '\033[33m')
|
YELLOW=$(printf '\033[33m')
|
||||||
BLUE=$(printf '\033[34m')
|
BLUE=$(printf '\033[34m')
|
||||||
BOLD=$(printf '\033[1m')
|
BOLD=$(printf '\033[1m')
|
||||||
RESET=$(printf '\033[m')
|
RESET=$(printf '\033[m')
|
||||||
else
|
else
|
||||||
RED=""
|
RED=""
|
||||||
GREEN=""
|
GREEN=""
|
||||||
YELLOW=""
|
YELLOW=""
|
||||||
BLUE=""
|
BLUE=""
|
||||||
BOLD=""
|
BOLD=""
|
||||||
RESET=""
|
RESET=""
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_ohmyzsh() {
|
setup_ohmyzsh() {
|
||||||
|
@ -114,6 +114,8 @@ setup_ohmyzsh() {
|
||||||
-c fsck.zeroPaddedFilemode=ignore \
|
-c fsck.zeroPaddedFilemode=ignore \
|
||||||
-c fetch.fsck.zeroPaddedFilemode=ignore \
|
-c fetch.fsck.zeroPaddedFilemode=ignore \
|
||||||
-c receive.fsck.zeroPaddedFilemode=ignore \
|
-c receive.fsck.zeroPaddedFilemode=ignore \
|
||||||
|
-c oh-my-zsh.remote=origin \
|
||||||
|
-c oh-my-zsh.branch="$BRANCH" \
|
||||||
--depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || {
|
--depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || {
|
||||||
fmt_error "git clone of oh-my-zsh repo failed"
|
fmt_error "git clone of oh-my-zsh repo failed"
|
||||||
exit 1
|
exit 1
|
||||||
|
@ -157,9 +159,9 @@ setup_zshrc() {
|
||||||
sed "/^export ZSH=/ c\\
|
sed "/^export ZSH=/ c\\
|
||||||
export ZSH=\"$ZSH\"
|
export ZSH=\"$ZSH\"
|
||||||
" "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp
|
" "$ZSH/templates/zshrc.zsh-template" > ~/.zshrc-omztemp
|
||||||
mv -f ~/.zshrc-omztemp ~/.zshrc
|
mv -f ~/.zshrc-omztemp ~/.zshrc
|
||||||
|
|
||||||
echo
|
echo
|
||||||
}
|
}
|
||||||
|
|
||||||
setup_shell() {
|
setup_shell() {
|
||||||
|
|
|
@ -66,10 +66,20 @@ git config rebase.autoStash true
|
||||||
|
|
||||||
local ret=0
|
local ret=0
|
||||||
|
|
||||||
|
# repository settings
|
||||||
|
remote=${"$(git config --local oh-my-zsh.remote)":-origin}
|
||||||
|
branch=${"$(git config --local oh-my-zsh.branch)":-master}
|
||||||
|
|
||||||
|
# repository state
|
||||||
|
last_head=$(git symbolic-ref --quiet --short HEAD || git rev-parse HEAD)
|
||||||
|
# checkout update branch
|
||||||
|
git checkout -q "$branch" -- || exit 1
|
||||||
|
# branch commit before update (used in changelog)
|
||||||
|
last_commit=$(git rev-parse "$branch")
|
||||||
|
|
||||||
# Update Oh My Zsh
|
# Update Oh My Zsh
|
||||||
printf "${BLUE}%s${RESET}\n" "Updating Oh My Zsh"
|
printf "${BLUE}%s${RESET}\n" "Updating Oh My Zsh"
|
||||||
last_commit=$(git rev-parse HEAD)
|
if git pull --rebase --stat $remote $branch; then
|
||||||
if git pull --rebase --stat origin master; then
|
|
||||||
# Check if it was really updated or not
|
# Check if it was really updated or not
|
||||||
if [[ "$(git rev-parse HEAD)" = "$last_commit" ]]; then
|
if [[ "$(git rev-parse HEAD)" = "$last_commit" ]]; then
|
||||||
message="Oh My Zsh is already at the latest version."
|
message="Oh My Zsh is already at the latest version."
|
||||||
|
@ -103,6 +113,9 @@ else
|
||||||
printf "${RED}%s${RESET}\n" 'There was an error updating. Try again later?'
|
printf "${RED}%s${RESET}\n" 'There was an error updating. Try again later?'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# go back to HEAD previous to update
|
||||||
|
git checkout -q "$last_head" --
|
||||||
|
|
||||||
# Unset git-config values set just for the upgrade
|
# Unset git-config values set just for the upgrade
|
||||||
case "$resetAutoStash" in
|
case "$resetAutoStash" in
|
||||||
"") git config --unset rebase.autoStash ;;
|
"") git config --unset rebase.autoStash ;;
|
||||||
|
|
Loading…
Reference in a new issue