54 lines
2.2 KiB
Bash
Executable File
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
|