|
1 | 1 | #!/usr/bin/env bash
|
| 2 | +set -eu |
2 | 3 |
|
3 | 4 | # Ensure PHP is installed
|
4 |
| -php -v > /dev/null 2>&1 |
5 |
| -if [[ $? -ne 0 ]]; then |
| 5 | +if ! command -v php > /dev/null 2>&1; then |
6 | 6 | echo "PHP is not found, installation aborted!"
|
7 | 7 | exit 1
|
8 | 8 | fi
|
9 | 9 |
|
10 |
| -# Check if Composer is already globally available |
11 |
| -composer -v > /dev/null 2>&1 |
12 |
| - |
13 | 10 | # Ensure Composer is installed/updated
|
14 |
| -if [[ $? -ne 0 ]]; then |
| 11 | +if ! command -v composer > /dev/null 2>&1; then |
15 | 12 | echo "*** Installing Composer ***"
|
16 |
| - |
17 |
| - EXPECTED_SIGNATURE=$(wget https://composer.github.io/installer.sig -O - -q) |
18 | 13 | php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
19 |
| - ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');") |
20 | 14 |
|
21 |
| - if [ "$EXPECTED_SIGNATURE" = "$ACTUAL_SIGNATURE" ] |
22 |
| - then |
| 15 | + if [ \ |
| 16 | + "$(curl -S https://composer.github.io/installer.sig)" = \ |
| 17 | + "$(php -r \"echo hash_file\('SHA384', 'composer-setup.php'\);\")" \ |
| 18 | + ]; then |
23 | 19 | php composer-setup.php --quiet --filename=composer
|
24 |
| - RESULT=$? |
25 |
| - if [[ $? -eq 0 ]]; then |
26 |
| - sudo mv composer /usr/local/bin/composer |
27 |
| - RESULT=$? |
28 |
| - fi |
| 20 | + sudo mv composer /usr/local/bin/composer |
29 | 21 | rm composer-setup.php
|
30 |
| - if [[ RESULT -ne 0 ]]; then |
31 |
| - exit $RESULT |
32 |
| - fi |
33 | 22 | else
|
34 | 23 | >&2 echo 'ERROR: Invalid composer installer signature'
|
35 | 24 | rm composer-setup.php
|
36 | 25 | exit 1
|
37 | 26 | fi
|
38 |
| -else |
39 |
| - echo "*** Updating Composer ***" |
40 |
| - composer selfupdate > /dev/null 2>&1 |
41 |
| - if [[ $? -ne 0 ]]; then |
42 |
| - composer global update "composer/composer" |
43 |
| - fi |
44 | 27 | fi
|
45 | 28 |
|
46 | 29 | echo "*** Updating shell profiles ***"
|
47 | 30 | # Add Composer's Global Bin to ~/.profile path
|
48 |
| -if [[ ! -f "~/.profile" ]]; then |
49 |
| - touch ~/.profile |
| 31 | +if [[ ! -f "$HOME/.profile" ]]; then |
| 32 | + touch "$HOME/.profile" |
| 33 | +fi |
| 34 | +if grep -q -F "export COMPOSER_HOME=$HOME/.composer" "$HOME/.profile"; then |
| 35 | + echo "export COMPOSER_HOME=$HOME/.composer" >> "$HOME/.profile" |
| 36 | +fi |
| 37 | +if grep -q -F "export PATH=$PATH:\$COMPOSER_HOME/vendor/bin" "$HOME/.profile"; then |
| 38 | + echo "export PATH=$PATH:\$COMPOSER_HOME/vendor/bin" >> "$HOME/.profile" |
50 | 39 | fi
|
51 |
| -grep -q -F 'export COMPOSER_HOME="~/.composer"' ~/.profile || echo 'export COMPOSER_HOME="~/.composer"' >> ~/.profile |
52 |
| -grep -q -F 'export PATH=$PATH:$COMPOSER_HOME/vendor/bin' ~/.profile || echo 'export PATH=$PATH:$COMPOSER_HOME/vendor/bin' >> ~/.profile |
53 | 40 |
|
54 | 41 | # Source the .profile to pick up changes
|
55 |
| -. ~/.profile |
| 42 | +# shellcheck source=/dev/null |
| 43 | +source "$HOME/.profile" |
56 | 44 |
|
57 | 45 | # Test if ZSH is installed
|
58 |
| -zsh --version > /dev/null 2>&1 |
59 |
| -if [[ $? -eq 0 ]]; then |
| 46 | +if command -v zsh > /dev/null 2>&1; then |
60 | 47 | # Add Composer's Global Bin to ~/.zprofile path
|
61 |
| - if [[ ! -f "~/.zprofile" ]]; then |
62 |
| - touch ~/.zprofile |
| 48 | + if [[ ! -f "$HOME/.zprofile" ]]; then |
| 49 | + touch "$HOME/.zprofile" |
| 50 | + fi |
| 51 | + if grep -q -F "export COMPOSER_HOME=$HOME/.composer" "$HOME/.zprofile"; then |
| 52 | + echo "export COMPOSER_HOME=$HOME/.composer" >> "$HOME/.zprofile" |
| 53 | + fi |
| 54 | + if grep -q -F "export PATH=$PATH:$COMPOSER_HOME/vendor/bin" "$HOME/.zprofile"; then |
| 55 | + echo "export PATH=$PATH:$COMPOSER_HOME/vendor/bin" >> "$HOME/.zprofile" |
63 | 56 | fi
|
64 |
| - grep -q -F 'export COMPOSER_HOME="~/.composer"' ~/.zprofile || echo 'export COMPOSER_HOME="~/.composer"' >> ~/.zprofile |
65 |
| - grep -q -F 'export PATH=$PATH:$COMPOSER_HOME/vendor/bin' ~/.zprofile || echo 'export PATH=$PATH:$COMPOSER_HOME/vendor/bin' >> ~/.zprofile |
66 | 57 |
|
67 | 58 | # Source the .zprofile to pick up changes
|
68 |
| - . ~/.zprofile |
| 59 | + # shellcheck source=/dev/null |
| 60 | + source "$HOME/.zprofile" |
69 | 61 | fi
|
70 | 62 |
|
71 | 63 | # Ensure Dealerdirect PHP QA tools are installed globally
|
|
0 commit comments