composer_modules/docker_php-composer_modules.sh

54 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
COMPOSER_VERSION="2.0.8"
# Check color support
if [ $(tput colors) -ge 8 ]; then
COLOR_SUPPORT=true
RESET="\033[00;37m"
ORANGE="\033[01;33m"
GREEN="\033[00;32m"
else
COLOR_SUPPORT=false
fi
docker ps &>/dev/null
if [ "$?" -ne 0 ]; then
# It appears that this user isn't enabled to talk to the Docker daemon
echo -e "You don't have access to the Docker daemon\nTry executing as \`root\` please."
exit 1
else
# List all directories (Composer modules), excluding "." alone;
# sorted alphabetically, just for output beauty
DIRS=$(find . -maxdepth 1 -type d | tail -n +2 | cut -d/ -f2 | sort)
for DIR in $DIRS; do
echo "Installing '$DIR'..."
# Enter the directory and install the Composer module from Composer's network itself
cd $DIR
# Ensure that a "composer.json" exists, or do you want to include the cosmic nothing?
if [ ! -f "composer.json" ]; then
if [ $COLOR_SUPPORT ]; then printf "[ ${ORANGE}Warn${RESET} ] "; fi
echo "Composer's files not found on module '$DIR', skipping."; echo
# Go back one level, since then we'll `continue` and not going back before the end of
# the loop step
cd ..
# No Composer related files in this directory, skip it!
continue
fi
# List Composer permissions, extract uid and gid from respective files in /etc
user=$(cat /etc/passwd | grep -e "^$(ls -l composer.json | awk '{print $3}')" | cut -d: -f3)
group=$(cat /etc/group | grep -e "^$(ls -l composer.json | awk '{print $4}')" | cut -d: -f3)
# Retrieve composer modules using docker and the user's uid and gid
# (the container gets deleted as soon as finished)
docker run --rm -it --user "$user":"$group" -v `pwd`:/app composer:$COMPOSER_VERSION install &>/dev/null
# Just some user presentation
if [ $COLOR_SUPPORT ]; then printf "[ ${GREEN}Ok${RESET} ] "; fi
echo "Module '$DIR' installed successfully."; echo
# Go back one level, unless on the next step you want to enter a non existent directory
cd ..
done
# Just some final user presentation
if [ $COLOR_SUPPORT ]; then printf "[ ${GREEN}All Done${RESET} ] "; fi
echo "All Composer modules downloaded and ready."
fi