frappe_docker/dbench
2018-08-02 21:01:09 -07:00

183 lines
No EOL
4.6 KiB
Bash

#!/bin/bash
function usage {
echo "Usage: $(basename "$0") [ --setup [-u] | --init [-m -e -d] [sitename] | --start [-b] | -h (--help) | -d (--developer) [sitename] | -a (--add) | -c \"Command to be sent to Frappe Bench on Docker\""
echo ''
echo 'where:'
echo ' dbench loads up container'
echo ' -c "command" send a command to bench in the container'
echo ' -h | --help show this help text'
echo ' -d | --developer [sitename] enables developer mode for "sitename" (if not specified, it will default to site1.local)'
echo ' -a | --add 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 ' --init [-m -e -d] [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'
echo ' --start [-b] starts frappe docker'
echo ' -b starts bench as well'
}
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"
}
add=0
setup=0
up=0
start=0
init=0
dev=0
erp=0
mgr=0
site=0
bench=0
cmd=0
positional=()
if [ $# == 0 ]; then
docker exec -it frappe bash
exit 0
fi
while [[ $# -gt 0 ]]; do
key="$1"
case "$key" in
-h | --help)
usage
exit 0
;;
-a | --add)
add=1
;;
-d | --developer)
dev=1
;;
-c)
cmd=1
;;
-e)
erp=1
;;
-u)
up=1
;;
-m)
mgr=1
;;
-b)
bench=1
;;
--setup)
setup=1
;;
--init)
init=1
;;
--start)
start=1
;;
*)
positional+=("$key")
;;
esac
shift
done
set -- "${positional[@]}"
site="$1"
if [ -z "$1" ]; then
site="site1.local"
fi
if [ $setup == 1 ]; then
docker-compose build
if [ $up == 1 ]; then
docker-compose up -d
else
docker-compose up
fi
exit 0
fi
if [ $init == 1 ]; then
frappe_installer "$site"
if [ $mgr == 1 ]; then
echo "installing bench manager"
docker exec -it frappe bash -c "bench setup manager"
fi
if [ $erp == 1 ]; then
echo "installing erpnext"
docker exec -it frappe bash -c "bench get-app erpnext"
docker exec -it frappe bash -c "bench --site $site install-app erpnext"
docker exec -it -u root frappe bash -c "bench --site $site set-config \"developer_mode\" 1 && bench clear-cache"
echo "finished"
fi
if [ $dev == 1 ]; then
docker exec -it -u root frappe bash -c "bench --site $site set-config \"developer_mode\" 1 && bench clear-cache"
fi
exit 0
fi
if [ $dev == 1 ]; then
if [ "$site" == 0 ]; then
site="site1.local"
fi
docker exec -it -u root frappe bash -c "bench --site $site set-config \"developer_mode\" 1 && bench clear-cache"
exit 0
fi
if [ $start == 1 ]; then
docker-compose start
./dbench -a
if [ $bench == 1 ]; then
docker exec -it frappe bash -c "bench start"
fi
exit 0
fi
if [ $dev == 1 ]; then
docker exec -it -u root frappe bash -c "bench --site $site set-config \"developer_mode\" 1 && bench clear-cache"
exit 0
fi
if [ $cmd == 1 ]; then
docker exec -it frappe bash -c "bench $*"
exit 0
fi
if [ $add == 1 ]; then
a=$(docker exec -i frappe bash -c "cd ~/frappe-bench && ls sites/*/site_config.json" | grep -o '/.\+/')
a="${a//$'\n'/ }"
a=$(echo "$a" | tr -d / )
result="127.0.0.1 ${a}"
echo "$result"
docker exec -u root -i frappe bash -c "echo ${result} | tee --append /etc/hosts"
docker exec -itu root frappe bash -c "printf '# User rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/frappe"
exit 0
fi
if $*; then
echo "Incorrect option $*, please make sure you are entering the correct commands"
usage
exit 1
fi
exit 0