Skip to content

Commit f5fdedf

Browse files
committed
Merge pull request #1138 from ParsePlatform/flovilmart.bootstrap
Adds bootstrap.sh
2 parents 3ce634b + 0a4cc60 commit f5fdedf

File tree

1 file changed

+163
-0
lines changed

1 file changed

+163
-0
lines changed

bootstrap.sh

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

0 commit comments

Comments
 (0)