mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2024-11-14 13:47:07 +03:00
1812546e99
* rename requirements.apt -> requirements-trusty.apt and requirements.apt.xenial -> requirements-xenial.apt * improve install_os_dependencies.sh * remove unused non-python requirements * rename "install" function to "install_packages" and "upgrade" function to "upgrade_packages" to solve shellcheck lint errors
92 lines
2.4 KiB
Bash
Executable File
92 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
WORK_DIR="$(dirname "$0")"
|
|
DISTRO_NAME=$(lsb_release -sc)
|
|
|
|
OS_REQUIREMENTS_FILENAME="$WORK_DIR/requirements-$DISTRO_NAME.apt"
|
|
|
|
|
|
if [ "$DISTRO_NAME" != "xenial" ] && [ "$DISTRO_NAME" != "trusty" ]; then
|
|
echo "Only the Ubuntu 14.04 (Trusty) and 16.04 (Xenial) is supported by this script";
|
|
echo "You can see requirements-trusty.apt or requirements-xenial.apt file to help search the equivalent package in your system";
|
|
exit 1;
|
|
fi
|
|
|
|
# Handle call with wrong command
|
|
function wrong_command()
|
|
{
|
|
echo "${0##*/} - unknown command: '${1}'"
|
|
usage_message
|
|
}
|
|
|
|
# Print help / script usage
|
|
function usage_message()
|
|
{
|
|
echo "usage: ./${0##*/} <command>"
|
|
echo "available commands are:"
|
|
echo -e "\tlist\t\tPrint a list of all packages defined on ${OS_REQUIREMENTS_FILENAME} file"
|
|
echo -e "\thelp\t\tPrint this help"
|
|
echo -e "\n\tCommands that require superuser permission:"
|
|
echo -e "\tinstall\t\tInstall packages defined on ${OS_REQUIREMENTS_FILENAME} file. Note: This\n\t\t\t does not upgrade the packages already installed for new\n\t\t\t versions, even if new version is available in the repository."
|
|
echo -e "\tupgrade\t\tSame that install, but upgrate the already installed packages,\n\t\t\t if new version is available."
|
|
|
|
}
|
|
|
|
# Read the requirements.apt file, and remove comments and blank lines
|
|
function list_packages(){
|
|
grep -v "#" "${OS_REQUIREMENTS_FILENAME}" | grep -v "^$";
|
|
}
|
|
|
|
function install_packages()
|
|
{
|
|
list_packages | xargs apt-get --no-upgrade install -y;
|
|
}
|
|
|
|
function upgrade_packages()
|
|
{
|
|
list_packages | xargs apt-get install -y;
|
|
}
|
|
|
|
|
|
function install_or_upgrade()
|
|
{
|
|
P=${1}
|
|
PARAN=${P:-"install"}
|
|
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo -e "\nYou must run this with root privilege" 2>&1
|
|
echo -e "Please do:\n" 2>&1
|
|
echo "sudo ./$WORK_DIR/${0##*/} $PARAN" 2>&1
|
|
echo -e "\n" 2>&1
|
|
|
|
exit 1
|
|
else
|
|
|
|
apt-get update
|
|
|
|
# Install the basic compilation dependencies and other required libraries of this project
|
|
if [ "$PARAN" == "install" ]; then
|
|
install_packages;
|
|
else
|
|
upgrade_packages;
|
|
fi
|
|
|
|
# cleaning downloaded packages from apt-get cache
|
|
apt-get clean
|
|
|
|
exit 0
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
|
|
# Handle command argument
|
|
case "$1" in
|
|
install) install_or_upgrade;;
|
|
upgrade) install_or_upgrade "upgrade";;
|
|
list) list_packages;;
|
|
help) usage_message;;
|
|
*) wrong_command "$1";;
|
|
esac
|