diff --git a/.travis.yml b/.travis.yml index 6564c319..c755b13e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,12 +16,11 @@ before_install: - curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose - chmod +x docker-compose - sudo mv docker-compose /usr/local/bin - - chmod u+x ./dbench - - chmod u+x ./curl-travis + - chmod ugo+x ./dbench install: - - ./dbench --setup -d - - ./dbench --init + - ./dbench --setup -u + - ./dbench --init -m -e -d - ./dbench --start - pip install --upgrade virtualenv - virtualenv -p python3 testenv @@ -35,5 +34,4 @@ script: - docker-compose ps | grep -i redis-socketio - docker-compose ps | grep -i mariadb - python test.py - - ./curl-travis - docker-compose stop \ No newline at end of file diff --git a/curl-travis b/curl-travis deleted file mode 100644 index 4a9c7e31..00000000 --- a/curl-travis +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -curl -H "Content-Type: application/json" --data '{"docker_tag": "env"}' -X POST https://registry.hub.docker.com/u/chabad360/frappe/trigger/$hubkey/ \ No newline at end of file diff --git a/dbench b/dbench index 06ca10a4..28e71cb9 100644 --- a/dbench +++ b/dbench @@ -1,20 +1,19 @@ #!/bin/bash function usage { - echo "Usage: dbench [-hda [sitename] | --init [-ed] [sitename] | --setup [-d] | --start [-b] | -c \"\"]" + echo "Usage: dbench [ --setup [-d] | --init [-med] [sitename] | " echo '' echo 'where:' echo ' -h show this help text' - echo ' -c send a command to the frappe container' - echo ' -d [sitename] enables developer mode for specified site' + 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 [-d] builds docker containers, NOTE: assumes you have docker installed' - echo ' -d start up docker containers as well' + 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 | -d] [sitename] initializes frappe-bench in docker and adds a site "sitename" (if not specified, it will default to site1.local)' + 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' - echo ' -d initializes frappe-bench and enables developer mode' } function frappe_installer { @@ -31,83 +30,133 @@ function frappe_installer { echo "$1 added" } -if [[ $# -eq 0 ]]; then - echo "entering container" - docker exec -it frappe bash -elif [ $1 == '--init' ]; then - site=$3 - if [ -z "$3" ]; then - site="site1.local" - fi - if [ -z "$2" ]; then - site="site1.local" - else - site=$2 - fi - echo "$site" - frappe_installer "$site" - if [ "$2" == '-e' ]; 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" - echo "finished" - elif [ "$2" == '-d' ]; then - docker exec -it -u root frappe bash -c "bench --site $site set-config \"developer_mode\" 1 && bench clear-cache" - elif [ "$2" == '-ed' ]; 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 +add=0 +setup=0 +up=0 +start=0 +init=0 +dev=0 +erp=0 +mgr=0 +site=0 +bench=0 +cmd=0 -elif [ "$1" == '--setup' ]; then +positional=() + +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 + ;; + -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 [ $setup == 1 ]; then docker-compose build - if [ "$2" == '-d' ]; then + if [ $up == 1 ]; then docker-compose up -d else docker-compose up fi -elif [ "$1" == '--start' ]; then - docker-compose start - ./dbench -a - if [ "$2" == '-b' ]; then - docker exec -i frappe bash -c "bench start" + 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 -else - while getopts ':hadc:' option; do - case "$option" in - h) - display_usage - exit - ;; - a) - 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" - ;; - d) - docker exec -it -u root frappe bash -c "bench --site $OPTARG set-config \"developer_mode\" 1 && bench clear-cache" - ;; - c) - docker exec -it -u root frappe bash -c "bench $OPTARG" - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - usage - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - usage - exit 1 - ;; - esac - done + 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 +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" + +fi +exit 0 \ No newline at end of file diff --git a/dbench.bak b/dbench.bak new file mode 100644 index 00000000..06ca10a4 --- /dev/null +++ b/dbench.bak @@ -0,0 +1,113 @@ +#!/bin/bash + +function usage { + echo "Usage: dbench [-hda [sitename] | --init [-ed] [sitename] | --setup [-d] | --start [-b] | -c \"\"]" + echo '' + echo 'where:' + echo ' -h show this help text' + echo ' -c send a command to the frappe 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 [-d] builds docker containers, NOTE: assumes you have docker installed' + echo ' -d start up docker containers as well' + echo ' --start [-b] starts frappe docker' + echo ' -b starts bench as well' + echo ' --init [-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 ' -d initializes frappe-bench and enables developer mode' +} + +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" +} + +if [[ $# -eq 0 ]]; then + echo "entering container" + docker exec -it frappe bash + +elif [ $1 == '--init' ]; then + site=$3 + if [ -z "$3" ]; then + site="site1.local" + fi + if [ -z "$2" ]; then + site="site1.local" + else + site=$2 + fi + echo "$site" + frappe_installer "$site" + if [ "$2" == '-e' ]; 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" + echo "finished" + elif [ "$2" == '-d' ]; then + docker exec -it -u root frappe bash -c "bench --site $site set-config \"developer_mode\" 1 && bench clear-cache" + elif [ "$2" == '-ed' ]; 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 + +elif [ "$1" == '--setup' ]; then + docker-compose build + if [ "$2" == '-d' ]; then + docker-compose up -d + else + docker-compose up + fi +elif [ "$1" == '--start' ]; then + docker-compose start + ./dbench -a + if [ "$2" == '-b' ]; then + docker exec -i frappe bash -c "bench start" + fi + +else + while getopts ':hadc:' option; do + case "$option" in + h) + display_usage + exit + ;; + a) + 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" + ;; + d) + docker exec -it -u root frappe bash -c "bench --site $OPTARG set-config \"developer_mode\" 1 && bench clear-cache" + ;; + c) + docker exec -it -u root frappe bash -c "bench $OPTARG" + ;; + \?) + echo "Invalid option: -$OPTARG" >&2 + usage + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument." >&2 + usage + exit 1 + ;; + esac + done +fi