#!/bin/bash if ! options=$(getopt -o hdaceumb --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 mgr=0 site=0 bench=0 initf=0 function usage { echo "Usage: dbench " 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="$optopt" ;; -c) docker exec -it frappe bash -c "$optopt" ;; -u) d=1 ;; -m) mgr=1 ;; -b) bench=1 ;; --setup) setup=1 ;; --init) init=1 site="$optopt" ;; --start) start=1 ;; --) break ;; esac shift done if [ $setup == 1 ]; then docker-compose build if [ $d == 1 ]; then docker-compose up -d else docker-compose up fi exit 0 fi if [ $init == 1 ]; then if ! $site; then site="site1.local" fi 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 [ $d == 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 [ $start == 1 ]; then docker-compose start ./dbench -a if [ $bench == 1 ]; then docker exec -it frappe bash -c "bench start" fi fi if [ $d == 1 ]; then docker exec -it -u root frappe bash -c "bench --site $site set-config \"developer_mode\" 1 && bench clear-cache" exit 0 fi exit 0