Skip to content

Instantly share code, notes, and snippets.

@willhertz
Forked from CarsonF/composer.sh
Created June 2, 2020 03:18
Show Gist options
  • Save willhertz/004e137db86db60df762d409545b0e16 to your computer and use it in GitHub Desktop.
Save willhertz/004e137db86db60df762d409545b0e16 to your computer and use it in GitHub Desktop.
Global Composer Setup
#!/usr/bin/env bash
# As root
# Make config and data dirs
mkdir /etc/composer -p || exit 1
mkdir /var/lib/composer -p
# Set composer home dir to global location
cat << EOF > /etc/profile.d/composer.sh
#!/usr/bin/env bash
export COMPOSER_HOME=/etc/composer
export COMPOSER_ALLOW_SUPERUSER=1
EOF
export COMPOSER_HOME=/etc/composer
export COMPOSER_ALLOW_SUPERUSER=1
# Allow dir to be passed when sudoing
# sudo composer global ...
cat << EOF > /etc/sudoers.d/composer
Defaults env_keep += "COMPOSER_HOME"
Defaults env_keep += "COMPOSER_ALLOW_SUPERUSER"
EOF
# install composer
curl -sS https://getcomposer.org/installer | php -d memory_limit=-1 -- --filename=composer --install-dir=/usr/bin || exit 1
# Reset data and cache dirs to be in normal location
composer config -g cache-dir "~/.composer/cache"
composer config -g data-dir "~/.composer"
chmod +r /etc/composer/auth.json
chmod +r /etc/composer/config.json
# Set global dirs for global context
composer global config data-dir /var/lib/composer
composer global config vendor-dir /var/lib/composer/vendor
composer global config bin-dir /usr/bin
# Add script to update composer and global packages on boot
cat << EOF > /var/lib/cloud/scripts/per-boot/composer_update.sh
#!/usr/bin/env bash
. /etc/profile
composer self
composer global update
EOF
chmod u+x /var/lib/cloud/scripts/per-boot/composer_update.sh
composer global require gmo/credstash "^1.0@dev"
composer global require symfony/console "^2.7 || ^3.0"
echo
echo
echo "Relogin to apply env variables"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment