mirror of https://gitee.com/bigwinds/arangodb
163 lines
4.6 KiB
Bash
Executable File
163 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
WD=$(dirname "$0")
|
|
# We are in Contents/MacOS. However everything is located under Contents/Resources
|
|
ROOTDIR=$(cd "$WD" && cd "../Resources" && pwd)
|
|
# create start script
|
|
|
|
ARANGOD_CONF_DIR="${HOME}@INC_CPACK_INSTALL_SYSCONFDIR@/"
|
|
ARANGOD_CONF="${ARANGOD_CONF_DIR}/arangod.conf"
|
|
mkdir -p "${HOME}@INC_CPACK_ARANGO_DATA_DIR@"
|
|
mkdir -p "${HOME}@INC_CPACK_ARANGO_LOG_DIR@"
|
|
mkdir -p "${HOME}@INC_CPACK_ARANGODB_APPS_DIRECTORY@"
|
|
|
|
if test ! -f "${HOME}@INC_CPACK_INSTALL_SYSCONFDIR@"; then
|
|
cp -R "${ROOTDIR}@CPACK_PACKAGING_INSTALL_PREFIX@/@CMAKE_INSTALL_SYSCONFDIR_ARANGO@" "${ARANGOD_CONF_DIR}/"
|
|
fi
|
|
|
|
# binary symlinks
|
|
SCRIPTS=$( cd "${ROOTDIR}@CMAKE_INSTALL_PREFIX@" && ls -1 {"@CMAKE_INSTALL_BINDIR@","@CMAKE_INSTALL_SBINDIR@"}/* )
|
|
|
|
for script in $SCRIPTS; do
|
|
base=$(basename "$script")
|
|
conf=$base
|
|
|
|
if test $conf == "arangoimp"; then
|
|
conf=arangoimport
|
|
fi
|
|
|
|
if test $base == "arangodb"; then
|
|
cat > "${ROOTDIR}/$base.$$" <<-'EOF'
|
|
#!/bin/sh
|
|
realpath() {
|
|
OURPWD=$PWD
|
|
cd "$(dirname "$1")"
|
|
LINK=$(readlink "$(basename "$1")")
|
|
while [ "$LINK" ]; do
|
|
cd "$(dirname "$LINK")"
|
|
LINK=$(readlink "$(basename "$1")")
|
|
done
|
|
REALPATH="$PWD/$(basename "$1")"
|
|
cd "$OURPWD"
|
|
echo "$REALPATH"
|
|
}
|
|
me=$(realpath $0)
|
|
program=$(basename $me)
|
|
installation=$(dirname $me)
|
|
executable=$installation/opt/arangodb/bin/$program
|
|
if [ -x $executable ] ; then
|
|
exec $executable --server.arangod=$installation/opt/arangodb/sbin/arangod --server.js-dir=$installation/opt/arangodb/share/arangodb3/js "$@"
|
|
fi
|
|
echo "Could not find executable!"
|
|
exit 1
|
|
EOF
|
|
else
|
|
(
|
|
echo "#!/bin/bash"
|
|
echo
|
|
echo "export ROOTDIR=\"${ROOTDIR}@CMAKE_INSTALL_PREFIX@\""
|
|
echo
|
|
|
|
echo "exec \"\${ROOTDIR}/$script\" -c \"${ARANGOD_CONF_DIR}${conf}.conf\" \$*"
|
|
) > "${ROOTDIR}/$base.$$"
|
|
fi
|
|
|
|
chmod 755 "${ROOTDIR}/$base.$$"
|
|
mv "${ROOTDIR}/$base.$$" "${ROOTDIR}/$base"
|
|
done
|
|
|
|
PIDFILE="/var/tmp/arangod.pid"
|
|
|
|
if [ -f "${PIDFILE}" ]; then
|
|
result=$(
|
|
/usr/bin/osascript -s so <<-EOF
|
|
tell application "System Events"
|
|
activate
|
|
display dialog "PID File ${PIDFILE} exists, server already running. Press OK to try to start the server anyhow."
|
|
end tell
|
|
EOF
|
|
)
|
|
|
|
if echo "$result" | grep -Fq "User canceled"; then
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
if test ! -f "${HOME}@INC_CPACK_ARANGO_DATA_DIR@/SERVER" -a ! -f "${HOME}@INC_CPACK_ARANGO_DATA_DIR@/ENGINE"; then
|
|
STORAGE_ENGINE=$(
|
|
/usr/bin/osascript <<-EOF
|
|
set issueList to {"auto", "rocksdb", "mmfiles"}
|
|
set selectedIssue to {choose from list issueList}
|
|
return selectedIssue
|
|
EOF
|
|
)
|
|
|
|
if test "$STORAGE_ENGINE" == "false"; then
|
|
STORAGE_ENGINE=auto
|
|
fi
|
|
|
|
sed -i -e "s;storage-engine = auto;storage-engine = $STORAGE_ENGINE;" "${ARANGOD_CONF}"
|
|
else
|
|
if "${ROOTDIR}/arangod" -c "${ARANGOD_CONF}" --database.check-version true; then
|
|
rm -f "${HOME}@INC_CPACK_ARANGO_DATA_DIR@/LOCK" # FIXME
|
|
echo "database doesn't need an upgrade."
|
|
else
|
|
rm -f "${HOME}@INC_CPACK_ARANGO_DATA_DIR@/LOCK" # FIXME
|
|
UPGRADE_DB=$(/usr/bin/osascript<<END
|
|
tell application "System Events"
|
|
activate
|
|
set the answer to the button returned of (display dialog "Do you want to upgrade your ArangoDB Database directory?" buttons {"Yes", "No"})
|
|
end tell
|
|
END
|
|
)
|
|
if test "${UPGRADE_DB}" == "Yes"; then
|
|
echo "Updating the database ..."
|
|
"${ROOTDIR}/arangod" --database.auto-upgrade -c "${ARANGOD_CONF}"
|
|
rm -f "${HOME}@INC_CPACK_ARANGO_DATA_DIR@/LOCK" # FIXME
|
|
else
|
|
echo "Can't continue with not updated database."
|
|
exit 1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
# start the server
|
|
|
|
"${ROOTDIR}/arangod" -c "${ARANGOD_CONF}" --daemon --pid-file "${PIDFILE}"
|
|
|
|
# create some information for the user
|
|
|
|
INFOFILE="/tmp/ArangoDB-CLI.info.$$"
|
|
|
|
(
|
|
echo ""
|
|
echo "ArangoDB server has been started"
|
|
echo ""
|
|
echo "The database directory is located at"
|
|
echo " '${HOME}@INC_CPACK_ARANGO_DATA_DIR@'"
|
|
echo ""
|
|
echo "The log file is located at"
|
|
echo " '${HOME}@INC_CPACK_ARANGO_LOG_DIR@/arangod.log'"
|
|
echo ""
|
|
echo "You can access the server using a browser at 'http://127.0.0.1:8529/'"
|
|
echo "or start the ArangoDB shell"
|
|
echo " '${ROOTDIR}/arangosh'"
|
|
echo ""
|
|
echo "Switching to log-file now, closing this window will NOT stop the server."
|
|
echo ""
|
|
echo ""
|
|
) > $INFOFILE
|
|
|
|
# start a Terminal.app session
|
|
|
|
/usr/bin/osascript <<-EOF
|
|
tell application "Terminal"
|
|
do script "clear && cat $INFOFILE && rm $INFOFILE && sleep 20 && exec tail -1 -f ${HOME}@INC_CPACK_ARANGO_LOG_DIR@/arangod.log"
|
|
activate
|
|
end tell
|
|
EOF
|
|
|
|
# start safari and open web ui
|
|
|
|
sleep 10;
|
|
open "http://127.0.0.1:8529/"
|