|
|
|
@ -37,6 +37,9 @@ |
|
|
|
# |
|
|
|
# |
|
|
|
set -e |
|
|
|
set -e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Track if $ZSH was provided |
|
|
|
|
|
|
|
custom_zsh=${ZSH:+yes} |
|
|
|
|
|
|
|
|
|
|
|
# Default settings |
|
|
|
# Default settings |
|
|
|
ZSH=${ZSH:-~/.oh-my-zsh} |
|
|
|
ZSH=${ZSH:-~/.oh-my-zsh} |
|
|
|
REPO=${REPO:-ohmyzsh/ohmyzsh} |
|
|
|
REPO=${REPO:-ohmyzsh/ohmyzsh} |
|
|
|
@ -53,14 +56,18 @@ command_exists() { |
|
|
|
command -v "$@" >/dev/null 2>&1 |
|
|
|
command -v "$@" >/dev/null 2>&1 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
error() { |
|
|
|
fmt_error() { |
|
|
|
echo ${RED}"Error: $@"${RESET} >&2 |
|
|
|
echo ${RED}"Error: $@"${RESET} >&2 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
underline() { |
|
|
|
fmt_underline() { |
|
|
|
echo "$(printf '\033[4m')$@$(printf '\033[24m')" |
|
|
|
echo "$(printf '\033[4m')$@$(printf '\033[24m')" |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fmt_code() { |
|
|
|
|
|
|
|
echo "\`$(printf '\033[38;5;247m')$@${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 |
|
|
|
@ -91,13 +98,13 @@ setup_ohmyzsh() { |
|
|
|
echo "${BLUE}Cloning Oh My Zsh...${RESET}" |
|
|
|
echo "${BLUE}Cloning Oh My Zsh...${RESET}" |
|
|
|
|
|
|
|
|
|
|
|
command_exists git || { |
|
|
|
command_exists git || { |
|
|
|
error "git is not installed" |
|
|
|
fmt_error "git is not installed" |
|
|
|
exit 1 |
|
|
|
exit 1 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if [ "$OSTYPE" = cygwin ] && git --version | grep -q msysgit; then |
|
|
|
if [ "$OSTYPE" = cygwin ] && git --version | grep -q msysgit; then |
|
|
|
error "Windows/MSYS Git is not supported on Cygwin" |
|
|
|
fmt_error "Windows/MSYS Git is not supported on Cygwin" |
|
|
|
error "Make sure the Cygwin git package is installed and is first on the \$PATH" |
|
|
|
fmt_error "Make sure the Cygwin git package is installed and is first on the \$PATH" |
|
|
|
exit 1 |
|
|
|
exit 1 |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
@ -106,7 +113,7 @@ setup_ohmyzsh() { |
|
|
|
-c fetch.fsck.zeroPaddedFilemode=ignore \ |
|
|
|
-c fetch.fsck.zeroPaddedFilemode=ignore \ |
|
|
|
-c receive.fsck.zeroPaddedFilemode=ignore \ |
|
|
|
-c receive.fsck.zeroPaddedFilemode=ignore \ |
|
|
|
--depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || { |
|
|
|
--depth=1 --branch "$BRANCH" "$REMOTE" "$ZSH" || { |
|
|
|
error "git clone of oh-my-zsh repo failed" |
|
|
|
fmt_error "git clone of oh-my-zsh repo failed" |
|
|
|
exit 1 |
|
|
|
exit 1 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -130,8 +137,8 @@ setup_zshrc() { |
|
|
|
if [ -e "$OLD_ZSHRC" ]; then |
|
|
|
if [ -e "$OLD_ZSHRC" ]; then |
|
|
|
OLD_OLD_ZSHRC="${OLD_ZSHRC}-$(date +%Y-%m-%d_%H-%M-%S)" |
|
|
|
OLD_OLD_ZSHRC="${OLD_ZSHRC}-$(date +%Y-%m-%d_%H-%M-%S)" |
|
|
|
if [ -e "$OLD_OLD_ZSHRC" ]; then |
|
|
|
if [ -e "$OLD_OLD_ZSHRC" ]; then |
|
|
|
error "$OLD_OLD_ZSHRC exists. Can't back up ${OLD_ZSHRC}" |
|
|
|
fmt_error "$OLD_OLD_ZSHRC exists. Can't back up ${OLD_ZSHRC}" |
|
|
|
error "re-run the installer again in a couple of seconds" |
|
|
|
fmt_error "re-run the installer again in a couple of seconds" |
|
|
|
exit 1 |
|
|
|
exit 1 |
|
|
|
fi |
|
|
|
fi |
|
|
|
mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}" |
|
|
|
mv "$OLD_ZSHRC" "${OLD_OLD_ZSHRC}" |
|
|
|
@ -160,13 +167,13 @@ setup_shell() { |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
# If this user's login shell is already "zsh", do not attempt to switch. |
|
|
|
# If this user's login shell is already "zsh", do not attempt to switch. |
|
|
|
if [ "$(basename "$SHELL")" = "zsh" ]; then |
|
|
|
if [ "$(basename -- "$SHELL")" = "zsh" ]; then |
|
|
|
return |
|
|
|
return |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
# If this platform doesn't provide a "chsh" command, bail out. |
|
|
|
# If this platform doesn't provide a "chsh" command, bail out. |
|
|
|
if ! command_exists chsh; then |
|
|
|
if ! command_exists chsh; then |
|
|
|
cat <<-EOF |
|
|
|
cat <<EOF |
|
|
|
I can't change your shell automatically because this system does not have chsh. |
|
|
|
I can't change your shell automatically because this system does not have chsh. |
|
|
|
${BLUE}Please manually change your default shell to zsh${RESET} |
|
|
|
${BLUE}Please manually change your default shell to zsh${RESET} |
|
|
|
EOF |
|
|
|
EOF |
|
|
|
@ -197,7 +204,7 @@ setup_shell() { |
|
|
|
elif [ -f /usr/share/defaults/etc/shells ]; then # Solus OS |
|
|
|
elif [ -f /usr/share/defaults/etc/shells ]; then # Solus OS |
|
|
|
shells_file=/usr/share/defaults/etc/shells |
|
|
|
shells_file=/usr/share/defaults/etc/shells |
|
|
|
else |
|
|
|
else |
|
|
|
error "could not find /etc/shells file. Change your default shell manually." |
|
|
|
fmt_error "could not find /etc/shells file. Change your default shell manually." |
|
|
|
return |
|
|
|
return |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
@ -206,8 +213,8 @@ setup_shell() { |
|
|
|
# 2. If that fails, get a zsh path from the shells file, then check it actually exists |
|
|
|
# 2. If that fails, get a zsh path from the shells file, then check it actually exists |
|
|
|
if ! zsh=$(which zsh) || ! grep -qx "$zsh" "$shells_file"; then |
|
|
|
if ! zsh=$(which zsh) || ! grep -qx "$zsh" "$shells_file"; then |
|
|
|
if ! zsh=$(grep '^/.*/zsh$' "$shells_file" | tail -1) || [ ! -f "$zsh" ]; then |
|
|
|
if ! zsh=$(grep '^/.*/zsh$' "$shells_file" | tail -1) || [ ! -f "$zsh" ]; then |
|
|
|
error "no zsh binary found or not present in '$shells_file'" |
|
|
|
fmt_error "no zsh binary found or not present in '$shells_file'" |
|
|
|
error "change your default shell manually." |
|
|
|
fmt_error "change your default shell manually." |
|
|
|
return |
|
|
|
return |
|
|
|
fi |
|
|
|
fi |
|
|
|
fi |
|
|
|
fi |
|
|
|
@ -222,7 +229,7 @@ setup_shell() { |
|
|
|
|
|
|
|
|
|
|
|
# Actually change the default shell to zsh |
|
|
|
# Actually change the default shell to zsh |
|
|
|
if ! chsh -s "$zsh"; then |
|
|
|
if ! chsh -s "$zsh"; then |
|
|
|
error "chsh command unsuccessful. Change your default shell manually." |
|
|
|
fmt_error "chsh command unsuccessful. Change your default shell manually." |
|
|
|
else |
|
|
|
else |
|
|
|
export SHELL="$zsh" |
|
|
|
export SHELL="$zsh" |
|
|
|
echo "${GREEN}Shell successfully changed to '$zsh'.${RESET}" |
|
|
|
echo "${GREEN}Shell successfully changed to '$zsh'.${RESET}" |
|
|
|
@ -232,7 +239,7 @@ setup_shell() { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
main() { |
|
|
|
main() { |
|
|
|
# Run as unattended if stdin is closed |
|
|
|
# Run as unattended if stdin is not a tty |
|
|
|
if [ ! -t 0 ]; then |
|
|
|
if [ ! -t 0 ]; then |
|
|
|
RUNZSH=no |
|
|
|
RUNZSH=no |
|
|
|
CHSH=no |
|
|
|
CHSH=no |
|
|
|
@ -256,10 +263,24 @@ main() { |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
if [ -d "$ZSH" ]; then |
|
|
|
if [ -d "$ZSH" ]; then |
|
|
|
cat <<-EOF |
|
|
|
echo "${YELLOW}The \$ZSH folder already exists ($ZSH).${RESET}" |
|
|
|
${YELLOW}You already have Oh My Zsh installed.${RESET} |
|
|
|
if [ "$custom_zsh" = yes ]; then |
|
|
|
You'll need to remove '$ZSH' if you want to reinstall. |
|
|
|
cat <<EOF |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
You ran the installer with the \$ZSH setting or the \$ZSH variable is |
|
|
|
|
|
|
|
exported. You have 3 options: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. Unset the ZSH variable when calling the installer: |
|
|
|
|
|
|
|
$(fmt_code "ZSH= sh install.sh") |
|
|
|
|
|
|
|
2. Install Oh My Zsh to a directory that doesn't exist yet: |
|
|
|
|
|
|
|
$(fmt_code "ZSH=path/to/new/ohmyzsh/folder sh install.sh") |
|
|
|
|
|
|
|
3. (Caution) If the folder doesn't contain important information, |
|
|
|
|
|
|
|
you can just remove it with $(fmt_code "rm -r $ZSH") |
|
|
|
|
|
|
|
|
|
|
|
EOF |
|
|
|
EOF |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
echo "You'll need to remove it if you want to reinstall." |
|
|
|
|
|
|
|
fi |
|
|
|
exit 1 |
|
|
|
exit 1 |
|
|
|
fi |
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
@ -268,7 +289,7 @@ main() { |
|
|
|
setup_shell |
|
|
|
setup_shell |
|
|
|
|
|
|
|
|
|
|
|
printf "$GREEN" |
|
|
|
printf "$GREEN" |
|
|
|
cat <<-'EOF' |
|
|
|
cat <<'EOF' |
|
|
|
__ __ |
|
|
|
__ __ |
|
|
|
____ / /_ ____ ___ __ __ ____ _____/ /_ |
|
|
|
____ / /_ ____ ___ __ __ ____ _____/ /_ |
|
|
|
/ __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ |
|
|
|
/ __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ |
|
|
|
@ -278,12 +299,12 @@ main() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
EOF |
|
|
|
EOF |
|
|
|
cat <<-EOF |
|
|
|
cat <<EOF |
|
|
|
Before you scream Oh My Zsh! please look over the ~/.zshrc file to select plugins, themes, and options. |
|
|
|
Before you scream Oh My Zsh! please look over the ~/.zshrc file to select plugins, themes, and options. |
|
|
|
|
|
|
|
|
|
|
|
• Follow us on Twitter: $(underline https://twitter.com/ohmyzsh) |
|
|
|
• Follow us on Twitter: $(fmt_underline https://twitter.com/ohmyzsh) |
|
|
|
• Join our Discord server: $(underline https://discord.gg/ohmyzsh) |
|
|
|
• Join our Discord server: $(fmt_underline https://discord.gg/ohmyzsh) |
|
|
|
• Get stickers, shirts, coffee mugs and other swag: $(underline https://shop.planetargon.com/collections/oh-my-zsh) |
|
|
|
• Get stickers, shirts, coffee mugs and other swag: $(fmt_underline https://shop.planetargon.com/collections/oh-my-zsh) |
|
|
|
|
|
|
|
|
|
|
|
EOF |
|
|
|
EOF |
|
|
|
printf "$RESET" |
|
|
|
printf "$RESET" |
|
|
|
|