Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Oh My Zsh
Commits
eef04c62
Commit
eef04c62
authored
Oct 31, 2020
by
Marc Cornellà
Browse files
fix(installer): fix error message if $ZSH exists when installing
Also prefix all formatting functions with fmt_ Related: #9427
parent
a3e0f4f2
Changes
2
Show whitespace changes
Inline
Side-by-side
.editorconfig
View file @
eef04c62
...
@@ -4,7 +4,5 @@ root = true
...
@@ -4,7 +4,5 @@ root = true
end_of_line = lf
end_of_line = lf
insert_final_newline = true
insert_final_newline = true
charset = utf-8
charset = utf-8
indent_size = 2
[*.sh]
indent_style = space
indent_size = 4
indent_style = tab
tools/install.sh
View file @
eef04c62
...
@@ -37,6 +37,9 @@
...
@@ -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() {
...
@@ -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() {
...
@@ -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() {
...
@@ -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() {
...
@@ -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,16 +167,16 @@ setup_shell() {
...
@@ -160,16 +167,16 @@ 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
return
return
fi
fi
...
@@ -197,7 +204,7 @@ setup_shell() {
...
@@ -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() {
...
@@ -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() {
...
@@ -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() {
...
@@ -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() {
...
@@ -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
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
else
echo
"You'll need to remove it if you want to reinstall."
fi
exit
1
exit
1
fi
fi
...
@@ -268,24 +289,24 @@ main() {
...
@@ -268,24 +289,24 @@ main() {
setup_shell
setup_shell
printf
"
$GREEN
"
printf
"
$GREEN
"
cat
<<
-
'
EOF
'
cat
<<
'
EOF
'
__ __
__ __
____ / /_ ____ ___ __ __ ____ _____/ /_
____ / /_ ____ ___ __ __ ____ _____/ /_
/ __
\/
__
\
/ __ `__
\/
/ / / /_ / / ___/ __
\
/ __
\/
__
\
/ __ `__
\/
/ / / /_ / / ___/ __
\
/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / /
/ /_/ / / / / / / / / / / /_/ / / /_(__ ) / / /
\_
___/_/ /_/ /_/ /_/ /_/
\_
_, / /___/____/_/ /_/
\_
___/_/ /_/ /_/ /_/ /_/
\_
_, / /___/____/_/ /_/
/____/ ....is now installed!
/____/ ....is now installed!
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
"
if
[
$RUNZSH
=
no
]
;
then
if
[
$RUNZSH
=
no
]
;
then
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment