PageRenderTime 2641ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 1ms

/bootstrap.sh

https://gitlab.com/mlnkv/parse-server
Shell | 163 lines | 131 code | 30 blank | 2 comment | 26 complexity | 203fea0b9e5fdf053fb4d598a997f449 MD5 | raw file
  1. #!/bin/sh
  2. RED='\033[0;31m'
  3. GREEN='\033[0;32m'
  4. NC='\033[0m'
  5. BOLD='\033[1m'
  6. CHECK="${GREEN}\xE2\x9C\x93${NC}"
  7. DEFAULT_MONGODB_URI='mongodb://localhost:127.0.0.1:27017/parse'
  8. confirm() {
  9. DEFAULT=$1;
  10. shift
  11. printf "$@"
  12. read -r YN
  13. if [ "$YN" = "" ] && [ "$DEFAULT" = 'N' ]; then
  14. exit 1
  15. elif [ "$YN" != "" ] && [ "$YN" != "y" ] && [ "$YN" != "Y" ]; then
  16. echo 'Bye Bye!'
  17. exit 1
  18. fi
  19. }
  20. genstring() {
  21. local l=$1
  22. [ "$l" == "" ] && l=40
  23. LC_ALL=C tr -dc A-Za-z0-9 < /dev/urandom | head -c ${l}
  24. }
  25. check_node() {
  26. node=`which node 2>&1`
  27. ret=$?
  28. if [ $ret -eq 0 ] && [ -x "$node" ]; then
  29. echo "${CHECK} node:" $(node -v)
  30. (exit 0)
  31. else
  32. echo "parse-server cannot be installed without Node.js." >&2
  33. exit 1
  34. fi
  35. }
  36. check_npm() {
  37. npm=`which npm 2>&1`
  38. ret=$?
  39. if [ $ret -eq 0 ] && [ -x "$npm" ]; then
  40. echo "${CHECK} npm:" $(npm -v)
  41. (exit 0)
  42. else
  43. echo "parse-server cannot be installed without npm." >&2
  44. exit 1
  45. fi
  46. }
  47. echo ''
  48. echo 'This will setup parse-server in the current directory'
  49. confirm 'Y' 'Do you want to continue? (Y/n): '
  50. check_node
  51. check_npm
  52. echo "Setting up parse-server in $PWD"
  53. if [ -f './package.json' ]; then
  54. echo "\n${RED}package.json exists${NC}"
  55. confirm 'N' "Do you want to continue? \n${RED}this will erase your configuration${NC} (y/N): "
  56. fi
  57. if [ -f 'config.json' ]; then
  58. echo "\n${RED}config.json exists${NC}"
  59. confirm 'N' "Do you want to continue? \n${RED}this will erase your configuration${NC} (y/N): "
  60. fi
  61. APP_NAME=''
  62. i=0
  63. while [ "$APP_NAME" = "" ]
  64. do
  65. [[ $i != 0 ]] && printf "${RED}An application name is required!${NC}\n"
  66. printf 'Enter your Application Name: '
  67. read -r APP_NAME
  68. i=$(($i+1))
  69. done
  70. printf 'Enter your appId (leave empty to generate): '
  71. read -r APP_ID
  72. [[ $APP_ID = '' ]] && APP_ID=$(genstring) && printf "\n$APP_ID\n\n"
  73. printf 'Enter your masterKey (leave empty to generate): '
  74. read -r MASTER_KEY
  75. [[ $MASTER_KEY = '' ]] && MASTER_KEY=$(genstring) && printf "\n$MASTER_KEY\n\n"
  76. printf "Enter your mongodbURI (%s): " $DEFAULT_MONGODB_URI
  77. read -r MONGODB_URI
  78. [[ $MONGODB_URI = '' ]] && MONGODB_URI="$DEFAULT_MONGODB_URI"
  79. cat > ./config.json << EOF
  80. {
  81. "appId": "$APP_ID",
  82. "masterKey": "$MASTER_KEY",
  83. "appName": "$APP_NAME",
  84. "cloud": "./cloud/main",
  85. "databaseURI": "$MONGODB_URI"
  86. }
  87. EOF
  88. echo "${CHECK} Created config.json"
  89. # Make a proper npm app name
  90. NPM_APP_NAME=$(echo "$APP_NAME" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
  91. cat > ./package.json << EOF
  92. {
  93. "name": "$NPM_APP_NAME",
  94. "scripts": {
  95. "start": "parse-server ./config.json"
  96. },
  97. "dependencies": {
  98. "parse-server": "^2.0.0"
  99. }
  100. }
  101. EOF
  102. echo "${CHECK} Created package.json"
  103. if [ -d "./cloud/" ]; then
  104. echo "${CHECK} cloud/ exists"
  105. else
  106. mkdir -p ./cloud
  107. echo "${CHECK} Created cloud/"
  108. fi
  109. if [ -e "./cloud/main.js" ]; then
  110. echo "${CHECK} cloud/main.js exists"
  111. else
  112. echo "${CHECK} Created cloud/main.js"
  113. cat > ./cloud/main.js << EOF
  114. // Cloud Code entry point
  115. EOF
  116. fi
  117. if [ -d "./public/" ]; then
  118. echo "${CHECK} public/ exists"
  119. else
  120. mkdir -p ./public
  121. echo "${CHECK} Created public/"
  122. fi
  123. echo "\n${CHECK} running npm install\n"
  124. npm install
  125. CURL_CMD=$(cat << EOF
  126. curl -X POST -H 'X-Parse-Application-Id: ${APP_ID}' \\
  127. -H 'Content-Type: application/json' \\
  128. -d '{"foo":"bar"}' http://localhost:1337/parse/classes/TestObject
  129. EOF)
  130. echo "\n${CHECK} Happy Parsing!\n\n"
  131. echo "${CHECK} Make sure you have ${BOLD}mongo${NC} listening on ${BOLD}${MONGODB_URI}${NC}"
  132. echo "${CHECK} start parse-server by running ${BOLD}npm start${NC}"
  133. echo "${CHECK} Test your setup with:\n\n${CURL_CMD}\n"