diff --git a/.travis.yml b/.travis.yml index 6564c319..89706128 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,11 +16,10 @@ 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 --setup -u - ./dbench --init - ./dbench --start - pip install --upgrade virtualenv @@ -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 5beca359..949c0b9f 100644 --- a/dbench +++ b/dbench @@ -1,20 +1,20 @@ #!/bin/bash function usage { - echo "Usage: dbench [-hda [sitename] | --init [-ed] [sitename] | --setup [-d] | --start [-b] | -c \"\"]" + 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 ' -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 ' 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' - 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 { @@ -31,83 +31,153 @@ function frappe_installer { echo "$1 added" } -if [[ $# -eq 0 ]]; then - echo "entering container" + +add=0 +setup=0 +up=0 +start=0 +init=0 +dev=0 +erp=0 +mgr=0 +site=0 +bench=0 +cmd=0 + +positional=() + +if [[ $# -gt 0 ]]; then docker exec -it frappe bash + exit 0 +fi -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 +while [[ $# -gt 0 ]]; do +key="$1" -elif [ "$1" == '--setup' ]; then + 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 [ "$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 + 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 \ No newline at end of file