frappe_docker/dbench
2018-08-02 16:07:45 -07:00

99 lines
No EOL
2.7 KiB
Bash

#!/bin/bash
if ! options=$(getopt -o hd:aceu --long add,help,developer:,setup,start,init -- "$@")
then
echo "entering container"
docker exec -it frappe bash
fi
add=0
setup=0
d=0
start=0
init=0
dev=0
erp=0
mangr=0
site=0
function usage {
echo "Usage: dbench [-had sitename | --init [-e] [sitename] | --setup [-d] | --start [-b] | -c \"<command to be executed on bench inside container>\"]"
echo ''
echo 'where:'
echo ' -h show this help text'
echo ' -c command send a command to bench in the container'
echo ' -d sitename enables developer mode for specified site'
echo ' -a adds site-names to /etc/hosts file in the container to facilitate multisite access'
echo ' --setup [-u] builds docker containers, NOTE: assumes you have docker installed'
echo ' -u start up docker containers as well'
echo ' --start [-b] starts frappe docker'
echo ' -b starts bench as well'
echo ' --init [-e] [sitename] initializes frappe-bench in docker and adds a site "sitename" (if not specified, it will default to site1.local)'
echo ' -e initializes frappe-bench and installs erpnext'
}
function frappe_installer {
echo "starting frappe_docker setup"
docker exec -i -u root frappe bash -c "cd /home/frappe && chown -R frappe:frappe ./*"
docker exec -it frappe bash -c "cd .. && bench init frappe-bench --ignore-exist --skip-redis-config-generation && cd frappe-bench"
docker exec -it frappe bash -c "mv Procfile_docker Procfile && mv sites/common_site_config_docker.json sites/common_site_config.json"
echo "frappe-bench folder setup"
docker exec -it -u root frappe bash -c "apt-get install vim -y && apt-get install sudo -y && usermod -aG sudo frappe && printf '# User rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/frappe"
echo "adding $1"
docker exec -it frappe bash -c "bench new-site $1"
docker exec -i -u root frappe bash -c "echo 127.0.0.1 $1 >> /etc/hosts"
sudo su -c 'echo 127.0.0.1 $1 >> /etc/hosts'
echo "$1 added"
}
eval set -- "$options"
while true; do
case "$1" in
-h | --help)
usage
exit 0
;;
-a | --add)
add=1
;;
-d | --developer)
shift; # The arg is next in position args
dev=1
site=$1
;;
-c)
docker exec -it frappe bash -c "$optopt"
;;
-u)
d=1
;;
--setup)
setup=1
;;
--init)
init=1
site=$optopt
;;
--)
break
;;
esac
shift
done
if setup; then
docker-compose build
if d; then
docker-compose -d
else
docker-compose
fi
exit 0
fi
if init; then
if ! site; then
site="site1.local"
fi
frappe_installer site
fi