Adds bootstrap.sh
This commit is contained in:
149
bootstrap.sh
Executable file
149
bootstrap.sh
Executable file
@@ -0,0 +1,149 @@
|
||||
#!/bin/sh
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
NC='\033[0m'
|
||||
CHECK="${GREEN}\xE2\x9C\x93${NC}"
|
||||
confirm() {
|
||||
DEFAULT=$1;
|
||||
shift
|
||||
printf "$@"
|
||||
read -r YN
|
||||
if [ "$YN" = "" ] && [ "$DEFAULT" = 'N' ]; then
|
||||
exit 1
|
||||
elif [ "$YN" != "" ] && [ "$YN" != "y" ] && [ "$YN" != "Y" ]; then
|
||||
echo 'Bye Bye!'
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
genstring() {
|
||||
local l=$1
|
||||
[ "$l" == "" ] && l=40
|
||||
LC_ALL=C tr -dc A-Za-z0-9 < /dev/urandom | head -c ${l}
|
||||
}
|
||||
|
||||
check_node() {
|
||||
node=`which node 2>&1`
|
||||
ret=$?
|
||||
|
||||
if [ $ret -eq 0 ] && [ -x "$node" ]; then
|
||||
echo "${CHECK} node:" $(node -v)
|
||||
(exit 0)
|
||||
else
|
||||
echo "parse-server cannot be installed without Node.js." >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_npm() {
|
||||
npm=`which npm 2>&1`
|
||||
ret=$?
|
||||
|
||||
if [ $ret -eq 0 ] && [ -x "$npm" ]; then
|
||||
echo "${CHECK} npm:" $(npm -v)
|
||||
(exit 0)
|
||||
else
|
||||
echo "parse-server cannot be installed without npm." >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
echo ''
|
||||
echo 'This will setup parse-server in the current directory'
|
||||
confirm 'Y' 'Do you want to continue? (Y/n): '
|
||||
|
||||
check_node
|
||||
check_npm
|
||||
|
||||
echo "Setting up parse-server in $PWD"
|
||||
|
||||
if [ -f './package.json' ]; then
|
||||
echo "\n${RED}package.json exists${NC}"
|
||||
confirm 'N' "Do you want to continue? \n${RED}this will erase your configuration${NC} (y/N): "
|
||||
fi
|
||||
|
||||
|
||||
if [ -f 'config.json' ]; then
|
||||
echo "\n${RED}config.json exists${NC}"
|
||||
confirm 'N' "Do you want to continue? \n${RED}this will erase your configuration${NC} (y/N): "
|
||||
fi
|
||||
|
||||
APP_NAME=''
|
||||
i=0
|
||||
while [ "$APP_NAME" = "" ]
|
||||
do
|
||||
[[ $i != 0 ]] && printf "${RED}An application name is required!${NC}\n"
|
||||
printf 'Enter your Application Name: '
|
||||
read -r APP_NAME
|
||||
i=$(($i+1))
|
||||
done
|
||||
|
||||
printf 'Enter your appId (leave empty to generate): '
|
||||
read -r APP_ID
|
||||
|
||||
[[ $APP_ID = '' ]] && APP_ID=$(genstring) && printf "\n$APP_ID\n\n"
|
||||
|
||||
printf 'Enter your masterKey (leave empty to generate): '
|
||||
read -r MASTER_KEY
|
||||
|
||||
[[ $MASTER_KEY = '' ]] && MASTER_KEY=$(genstring) && printf "\n$MASTER_KEY\n\n"
|
||||
|
||||
cat > ./config.json << EOF
|
||||
{
|
||||
"appId": "$APP_ID",
|
||||
"masterKey": "$MASTER_KEY",
|
||||
"appName": "$APP_NAME",
|
||||
"cloud": "./cloud/main"
|
||||
}
|
||||
EOF
|
||||
echo "${CHECK} Created config.json"
|
||||
|
||||
# Make a proper npm app name
|
||||
NPM_APP_NAME=$(echo "$APP_NAME" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')
|
||||
cat > ./package.json << EOF
|
||||
{
|
||||
"name": "$NPM_APP_NAME",
|
||||
"scripts": {
|
||||
"start": "parse-server ./config.json"
|
||||
},
|
||||
"dependencies": {
|
||||
"parse-server": "^2.0.0"
|
||||
}
|
||||
}
|
||||
EOF
|
||||
echo "${CHECK} Created package.json"
|
||||
|
||||
if [ -d "./cloud/" ]; then
|
||||
echo "${CHECK} cloud/ exists"
|
||||
else
|
||||
mkdir -p ./cloud
|
||||
echo "${CHECK} Created cloud/"
|
||||
fi
|
||||
|
||||
if [ -e "./cloud/main.js" ]; then
|
||||
echo "${CHECK} cloud/main.js exists"
|
||||
else
|
||||
echo "${CHECK} Created cloud/main.js"
|
||||
cat > ./cloud/main.js << EOF
|
||||
// Cloud Code entry point
|
||||
|
||||
EOF
|
||||
fi
|
||||
|
||||
if [ -d "./public/" ]; then
|
||||
echo "${CHECK} public/ exists"
|
||||
else
|
||||
mkdir -p ./public
|
||||
echo "${CHECK} Created public/"
|
||||
fi
|
||||
|
||||
echo "\n${CHECK} running npm install\n"
|
||||
|
||||
npm install
|
||||
|
||||
confirm 'Y' '\nDo you want to start the server now? (Y/n): '
|
||||
|
||||
echo "\n${CHECK} running npm start\n"
|
||||
|
||||
npm start
|
||||
Reference in New Issue
Block a user