Commit graph

84 commits

Author SHA1 Message Date
Andrew Janke
43b3126b5c installer: use timestamped backups to preserve all old zshrcs 2019-06-03 17:18:24 +02:00
Marc Cornellà
153f5e11ed installer: use default color sequences on missing tput
Supposed to be POSIX-compatible. Proved to work in dash, yash and whatever
alpine uses. See https://unix.stackexchange.com/a/371873
2019-06-03 17:18:24 +02:00
Marc Cornellà
220d69b2ce installer: allow configuration of remote URL to clone from 2019-06-03 17:18:24 +02:00
Andrew Janke
aa27430e10 installer: add ability to install from forked & branched repos
This facilitates testing of changes to the core installation code: you'll be
able to do a roundtrip test of install and uninstall using the working code on
your branch.

Controlled by passing $REPO and $BRANCH environment variables to install.sh.
2019-06-03 17:18:24 +02:00
Marc Cornellà
a6a093ba2a installer: improve zsh binary path search in setup_shell
This changes the behavior to default to the binary found first in $PATH,
then checking it's actually in the shells file (/etc/shells).

If that fails go back to the previous behavior, but actually check that
the path obtained exists in the filesystem.

Co-authored-by: Joel Kuzmarski <leoj3n@gmail.com>
2019-06-03 17:18:24 +02:00
Fran
9d2b3ce79f installer: fix for Solus OS and systems with no /etc/shells
Co-authored-by: Fredrik Fornwall <fredrik@fornwall.net>
2019-06-03 17:18:24 +02:00
Marc Cornellà
62216aaa8f installer: use guard clauses in setup_shell for better readability
Guard clauses are if constructs that return early if there is an error
that prevents continuing. This way there isn't a big nesting of if
expressions.
2019-06-03 17:18:23 +02:00
Raf Czlonka
8e10ac4d73 installer: make sure shell in /etc/shells is not commented
Otherwise we risk a situation where a full path to `zsh` is commented, i.e.:

    #/usr/local/bin/zsh
2019-06-03 17:18:23 +02:00
Luca S
73f29087f9 installer: replace the current shell with the new ZSH instance
This replaces the currently running process with the new one using `exec`
instead of creating a new process. This way, when the user `exit`s out of
the new shell it will not pop them back into the shell from which ohmyzsh
was installed from.
2019-06-03 17:18:23 +02:00
Marc Cornellà
1fdd5351fb installer: abstract error messages 2019-06-03 17:18:23 +02:00
Marc Cornellà
576499a5ad installer: fix for failed chsh quitting the installation 2019-06-03 17:18:23 +02:00
Marc Cornellà
a7bd1f99ae installer: extract most code into functions 2019-06-03 17:18:23 +02:00
Marc Cornellà
f94443925d installer: reorganise and add comments 2019-06-03 17:18:23 +02:00
Marc Cornellà
73ef051aae installer: use tabs to allow future heredocs
This will allow us to use tab stripping heredocs with `<<-'.
See http://www.tldp.org/LDP/abs/html/here-docs.html#EX71A

Add editorconfig file to enforce this style.
See http://editorconfig.org for more information.
2019-06-03 17:18:22 +02:00
Marc Cornellà
9a832cccef installer: use exit-on-error from the beginning 2019-06-03 17:18:22 +02:00
Guillermo Azurdia
9b2410fbcf Remove dots from installer URLs (#7780) 2019-04-18 23:08:07 +02:00
Robby Russell
f319aa845d
Updating Oh My Zsh shop URLs (#7619)
* Updating Oh My Zsh shop URLs

Linking directly to the Oh My Zsh inventory vs the top-level store with non-OMZ items.

* Updating link to Oh My Zsh products in the install script

* Updating link to Oh My Zsh shop products in the upgrade script

* Getting rid of 't-' in shirts for now
2019-02-25 19:22:07 -06:00
Jackson Delahunt
026e4e499e installer: make TEST_CURRENT_SHELL use basename (#7514)
Fixes #7492
2019-01-15 19:01:34 +01:00
Joel Kuzmarski
8f95637e67 Login shell after install (#5314)
Otherwise these files are not sourced:
  1. /etc/zprofile
  2. ~/.zprofile
  3. /etc/zlogin
  4. ~/.zlogin
  5. ~/.zlogout
  6. /etc/zlogout
2018-07-01 18:39:30 +02:00
Dan Wallis
fec0089cdd Quote $ZSH where necessary in install script (#6587)
Quote $ZSH where necessary in install script
2018-06-13 02:02:48 +02:00
ningwei1993
8f0ff4bb63 fix bug for check zsh (#6798) 2018-05-07 00:39:28 +02:00
Marc Cornellà
c4981bae0a installer: check if zsh in path instead of /etc/shells
Fixes #4955

Closes #5931
Closes #6398

Co-authored-by: Void <vst4rbot@gmail.com>
Co-authored-by: Kaleb Elwert <belak@coded.io>
2018-05-05 22:03:57 +02:00
Marc Cornellà
4fec0a46e7
[installer] use command -v to check for git
Quick fix to the script not finding git due to hash.
Solves #6697.
2018-04-17 22:14:23 +02:00
Doug Yun
2526d71c56 Use HTTPS for Planet Argon links (#6326) 2017-11-01 06:21:07 -07:00
Felipe Vargas
551abfcbb4 Remove undesirable hardcoding of PATH into zshrc (#4925)
See robbyrussell@b67961d
2016-06-16 21:56:34 +02:00
Andrew Janke
483f1208a5 installer: fix ordering of cygwin msys git check (#4557) 2016-05-31 00:53:54 +02:00
Marc Cornellà
ca5632bce1 Fix syntax error in #4515 on certain shells
Drops the `function` keyword and uses only `func(){}` syntax as per the
POSIX specification:

http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_09_05

Related: #4531
2015-10-21 10:48:02 +02:00
Marc Cornellà
78dc858396 Revert "Make install script safer"
This reverts commit c9d93757e8, which
makes it fail with a syntax error:

  sh: 1: Syntax error: "(" unexpected
2015-10-21 10:36:40 +02:00
Marc Cornellà
fdb0e239d4 Merge pull request #4507 from WhyEee/fix-no-tput
Fix install.sh/upgrade.sh for tput-less systems
2015-10-20 23:30:29 +02:00
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
Yannick Eckey
75e619b724 Fix install.sh/upgrade.sh for tput-less systems
@fcrozat's original fix assumes `which` not to output anything to STDOUT
in case the command is not found. That is not necessarily true on all
systems. A better solution is to check the return value instead.

Fixes #4376
2015-10-16 22:27:46 +02:00
Andrew Janke
f94fee5a7f installer: don't bail on errors in color setup
This is a hack to keep the installer working on systems without tput/terminfo.
2015-09-28 08:35:25 -04:00
Robby Russell
935948cf3b Merge pull request #3646 from apjanke/installer-cygwin-support-3
Add Cygwin support to installer.
2015-09-26 09:35:39 -07:00
Andrew Janke
96ff86142e Merge branch 'master' into installer-cygwin-support-3
Conflicts:
	tools/install.sh
2015-09-23 18:53:05 -04:00
Frederic Crozat
884a879562 Do not fail if tput is not available
Fixes issue #4376
2015-09-21 20:02:57 +02:00
Andrew Janke
6cddf7202b Merge branch 'master' into installer-portable-colors 2015-09-19 15:07:36 -04:00
Robby Russell
56cdec7534 Merge pull request #3889 from leycec/compaudit
Repair `zsh` Path Permissions on `oh-my-zsh` Startup under Cygwin
2015-09-19 08:40:34 -07:00
Andrew Janke
82c76f6b5c Merge changes from #4241 into installer-portable-colors
Conflicts:
	tools/install.sh
	tools/upgrade.sh
2015-09-03 12:50:55 -04:00
Andrew Janke
502f08b5e1 Add Cygwin support to installer.
* Balk at incompatible Windows/MSYS git
* Test for chsh presence before trying to use it
* Replace non-portable `[[ ... ]]` and `[ x = *pattern* ]` constructs
2015-09-03 12:47:02 -04:00
Robby Russell
ccaaa992c7 Merge pull request #4241 from heartinpiece/master
Check if Zsh is installed prior to installing Oh My Zsh
2015-08-30 21:44:38 -07:00
Robby Russell
b3f167d998 Merge pull request #3613 from apjanke/remove-sed-i
Installer: Remove "sed -i" for portability and hygiene
2015-08-30 09:13:04 -07:00
Andrew Janke
fe92ea98e0 installer: switch twitter link to https 2015-08-27 17:17:43 -04:00
Chang Hyun Park
58d2f9335d Check if Zsh is installed prior to installing Oh My Zsh
Check if Zsh is installed before installing anything else.
New-commers, or people who don't read the disclaimers(ex. me) will go
straight to stack overflow if chsh -s returns an error.
2015-08-12 16:47:37 +09:00
leycec
e8caf22beb Cygwin-specific "chsh" installation issue fixed.
Installation previously assumed the existence of a "chsh" command in the current
${PATH}. Since Cygwin does *NOT* provide this command, installation now tests
for the existence of this command before attempting to run it.
2015-07-20 00:56:19 -04:00
leycec
da395c5837 Secure umask enforced during installation.
For safety, a umask of 022 prohibiting both group and other writability is now
enforced during OMZ installation. In theory, this should reduce the likelihood
of subsequent compinit() failures due to insecure directory permissions under
all platforms except for default Cygwin installations (in which Windows ACLs
override POSIX umasks).
2015-07-20 00:56:19 -04:00
Andrew Janke
8cf610089d installer: use terminfo for portable escape sequences
Do not use terminal visual effects if not connected to a terminal.
2015-07-06 20:18:32 -04:00
Andrew Janke
19ea867a3a install.sh: use portable printf instead of echo 2015-07-06 19:44:59 -04:00
Pablo Tamarit
03b8c199e5 Fix 'chsh' by checking '/etc/shells' instead of using 'which'
fix test for chsh in install
in case $SHELL is zsh but not the last one in /etc/shells
fixes #3026 fixes #3779 fixes #3780
2015-05-05 19:49:19 +02:00
Andrew Janke
1246c3e08b install.sh: Replace nonstandard "sed -i" with sed + mv commands. Makes portable to systems whose sed lacks "-i", like OpenBSD. 2015-02-20 02:34:54 -05:00
Robby Russell
d2667bd0a2 Merge pull request #3353 from mizabrik/master
Save ZSH path in newly created .zshrc
2015-02-10 11:21:15 -08:00