1
0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2024-11-25 09:41:20 +08:00
ohmyzsh/tools
Brian J Brennan c9d93757e8 Make install script safer
This changeset wraps all of the commands in tools/install.sh in a
function and then calls that function as the last line of the
script.

The current install instructions ask the user to download the install
script using `curl` and pass the result to `sh`. This is totally
fine (as long as both the instructions and the script itself are served
using HTTPS), but the script should be written in a way such that it
doesn't start trying to actually *do* anything until the very last line.

The reason is due to the way `curl` work: if the socket drops before the
request is complete (server abruptly hangs up, client's internet flakes
out, etc.), `curl` will return the partial data that it received. Here
is an example of that:

![partial file execution](https://cldup.com/qU_Mnh2GmT.png)

A way this might cause issues for tools/install.sh is if the connection drops
after cloning but before the repository (L53-56). The .zshrc
configuration will not be copied and the shell will not be changed, but
if the user tries to run the install script again it will claim
oh-my-zsh is already installed (L31-39).

While this is not a particularly dangerous error condition (the user can
just delete .oh-my-zsh and re-run), it can certainly be confusing for
new users. This also helps future-proof the script for a time when it
might need to use a "dangerous" command, e.g. `rm`, and we want to make
sure it happens in the most transactional way possible.
2015-10-20 14:18:22 -04:00
..
check_for_upgrade.sh No input for Update Check defaults to Yes 2015-06-10 14:36:52 +02:00
install.sh Make install script safer 2015-10-20 14:18:22 -04:00
require_tool.sh Fix version parsing. Now working with command $ zsh --version 2011-04-13 17:24:44 +02:00
theme_chooser.sh Display right prompt in theme chooser 2013-09-10 11:28:31 +02:00
uninstall.sh Ask for confirmation before uninstall 2015-10-05 18:32:42 -03:00
upgrade.sh also handle missing tput in upgrade script. 2015-09-22 16:46:22 +02:00