Merge pull request #2 from chabad360/feature/getopt

Feature/getopt
This commit is contained in:
chabad360 2018-08-02 18:58:14 -07:00 committed by GitHub
commit a781dd63c9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 242 additions and 85 deletions

View file

@ -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 - curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
- chmod +x docker-compose - chmod +x docker-compose
- sudo mv docker-compose /usr/local/bin - sudo mv docker-compose /usr/local/bin
- chmod u+x ./dbench - chmod ugo+x ./dbench
- chmod u+x ./curl-travis
install: install:
- ./dbench --setup -d - ./dbench --setup -u
- ./dbench --init - ./dbench --init -m -e -d
- ./dbench --start - ./dbench --start
- pip install --upgrade virtualenv - pip install --upgrade virtualenv
- virtualenv -p python3 testenv - virtualenv -p python3 testenv
@ -35,5 +34,4 @@ script:
- docker-compose ps | grep -i redis-socketio - docker-compose ps | grep -i redis-socketio
- docker-compose ps | grep -i mariadb - docker-compose ps | grep -i mariadb
- python test.py - python test.py
- ./curl-travis
- docker-compose stop - docker-compose stop

View file

@ -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/

203
dbench
View file

@ -1,20 +1,19 @@
#!/bin/bash #!/bin/bash
function usage { function usage {
echo "Usage: dbench [-hda [sitename] | --init [-ed] [sitename] | --setup [-d] | --start [-b] | -c \"<command to be executed on bench inside container>\"]" echo "Usage: dbench [ --setup [-d] | --init [-med] [sitename] | "
echo '' echo ''
echo 'where:' echo 'where:'
echo ' -h show this help text' echo ' -h show this help text'
echo ' -c send a command to the frappe container' echo ' -c command send a command to bench in the container'
echo ' -d [sitename] enables developer mode for specified site' 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 ' -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 ' --setup [-u] builds docker containers, NOTE: assumes you have docker installed'
echo ' -d start up docker containers as well' echo ' -u start up docker containers as well'
echo ' --start [-b] starts frappe docker' echo ' --start [-b] starts frappe docker'
echo ' -b starts bench as well' 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 ' -e initializes frappe-bench and installs erpnext'
echo ' -d initializes frappe-bench and enables developer mode'
} }
function frappe_installer { function frappe_installer {
@ -31,83 +30,133 @@ function frappe_installer {
echo "$1 added" echo "$1 added"
} }
if [[ $# -eq 0 ]]; then
echo "entering container"
docker exec -it frappe bash
elif [ $1 == '--init' ]; then add=0
site=$3 setup=0
if [ -z "$3" ]; then up=0
site="site1.local" start=0
fi init=0
if [ -z "$2" ]; then dev=0
site="site1.local" erp=0
else mgr=0
site=$2 site=0
fi bench=0
echo "$site" cmd=0
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 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 docker-compose build
if [ "$2" == '-d' ]; then if [ $up == 1 ]; then
docker-compose up -d docker-compose up -d
else else
docker-compose up docker-compose up
fi fi
elif [ "$1" == '--start' ]; then exit 0
docker-compose start fi
./dbench -a
if [ "$2" == '-b' ]; then if [ $init == 1 ]; then
docker exec -i frappe bash -c "bench start"
frappe_installer "$site"
if [ $mgr == 1 ]; then
echo "installing bench manager"
docker exec -it frappe bash -c "bench setup manager"
fi fi
else if [ $erp == 1 ]; then
while getopts ':hadc:' option; do echo "installing erpnext"
case "$option" in docker exec -it frappe bash -c "bench get-app erpnext"
h) docker exec -it frappe bash -c "bench --site $site install-app erpnext"
display_usage docker exec -it -u root frappe bash -c "bench --site $site set-config \"developer_mode\" 1 && bench clear-cache"
exit echo "finished"
;; fi
a)
a=$(docker exec -i frappe bash -c "cd ~/frappe-bench && ls sites/*/site_config.json" | grep -o '/.\+/') if [ $dev == 1 ]; then
a="${a//$'\n'/ }" docker exec -it -u root frappe bash -c "bench --site $site set-config \"developer_mode\" 1 && bench clear-cache"
a=$(echo $a | tr -d / ) fi
result="127.0.0.1 ${a}" exit 0
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 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

113
dbench.bak Normal file
View file

@ -0,0 +1,113 @@
#!/bin/bash
function usage {
echo "Usage: dbench [-hda [sitename] | --init [-ed] [sitename] | --setup [-d] | --start [-b] | -c \"<command to be executed on bench inside container>\"]"
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