#!/usr/bin/env bash if [ -v $OSHIPKA_PATH ]; then echo "You need to specify OSHIPKA_PATH env variable" exit 1 fi echo "oshipka is at: $OSHIPKA_PATH" #!/usr/bin/env bash HELP=" Usage $0 [ bootstrap | worker | web | venv | install ] bootstrap [PROJECT_PATH] Create a new project in PROJECT_PATH worker Start worker web Start webapp venv Init venv install Install requirements " worker () { source venv/bin/activate python worker.py } web () { source venv/bin/activate python run.py } init_venv() { virtualenv -p python3 venv } install_reqs() { source venv/bin/activate pip install -r requirements.txt } bootstrap() { shift PROJECT_PATH=$1 if [[ -z "$PROJECT_PATH" ]]; then read -p "Enter project path: " PROJECT_PATH fi if [[ -z "$PROJECT_PATH" ]]; then echo "ERROR: Specify project path" exit 1 else echo "INFO: Project path: $PROJECT_PATH" PROJECT_PATH=`realpath $PROJECT_PATH` echo "INFO: Absolute project path: $PROJECT_PATH" if [[ "$PROJECT_PATH" == $OSHIPKA_PATH* ]]; then echo "ERROR: Project path can't be inside this directory. Exiting..." exit 1 fi if [ -d $PROJECT_PATH ]; then echo "ERROR: Project path exists. Please remove or specify another. Exiting..." exit 1 else echo "INFO: Project path doesn't exist, creating..." mkdir -p $PROJECT_PATH fi fi PROJECT_NAME=$(basename $PROJECT_PATH) echo "INFO: Bootstrapping project $PROJECT_NAME..." mkdir -p ${PROJECT_PATH} cp -r ${OSHIPKA_PATH}/bootstrap/* ${PROJECT_PATH}/ cp ${OSHIPKA_PATH}/bootstrap/.gitignore ${PROJECT_PATH}/.gitignore cd ${PROJECT_PATH} init_venv source venv/bin/activate pip install -e ${OSHIPKA_PATH} } command_main() { INITIAL_COMMAND=$1 case "$INITIAL_COMMAND" in bootstrap) bootstrap "$@" ;; worker) worker "$@" ;; web) web "$@" ;; venv) init_venv "$@" ;; install) install_reqs "$@" ;; link) install_reqs "$@" ;; *) >&2 echo -e "${HELP}" return 1 ;; esac return $? } command_main "$@"