#!/bin/bash display_usage () { echo "$(basename "$0") [-h] [-c \"\"]" echo '' echo 'where:' echo ' -h show this help text' echo ' -c execute a command inside docker using docker exec' echo ' -s adds site-names to /etc/hosts file in the container to facilitate multisite access' echo ' init initializes frappe-bench' echo ' init -e initializes frappe-bench and installs erpnext' } 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 && apt-get install sudo && usermod -aG sudo frappe && printf '# User rules for frappe\nfrappe ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/frappe" echo "adding site1.local" docker exec -it frappe bash -c "bench new-site site1.local" docker exec -i -u root frappe bash -c "echo 127.0.0.1 site1.local >> /etc/hosts" sudo su -c 'echo 127.0.0.1 site1.local >> /etc/hosts' echo "site1.local added" } if [[ $# -eq 0 ]]; then docker exec -it frappe bash elif [ $1 == 'init' && $2 == 'e' ] then frappe_installer echo "installing erpnext" docker exec -it frappe bash -c "bench get-app erpnext" | echo docker exec -it frappe bash -c "bench --site site1.local install-app erpnext" | echo echo "finished" elif [ $1 == 'init' ] then frappe_installer else while getopts ':hsc:' option; do case "$option" in h) display_usage exit ;; c) docker exec -it frappe bash -c "bench $OPTARG" ;; s) a=$(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" ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; :) echo "Option -$OPTARG requires an argument." >&2 exit 1 ;; esac done fi