| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 | 
							- #!/bin/bash
 - #
 - # .---.                  .              .
 - # |                      |              |
 - # |--- .--. .-.  .-.  .-.|  .-. .--.--. |.-.  .-. .--.  .-.
 - # |    |   (.-' (.-' (   | (   )|  |  | |   )(   )|  | (.-'
 - # '    '     --'  --'  -' -  -' '  '   -' -'   -' '   -  --'
 - #
 - #                    Freedom in the Cloud
 - #
 - # Functions for installing meteor
 - # See meteor.com
 - #
 - # License
 - # =======
 - #
 - # Copyright (C) 2017 Bob Mottram <bob@freedombone.net>
 - #
 - # This program is free software: you can redistribute it and/or modify
 - # it under the terms of the GNU Affero General Public License as published by
 - # the Free Software Foundation, either version 3 of the License, or
 - # (at your option) any later version.
 - #
 - # This program is distributed in the hope that it will be useful,
 - # but WITHOUT ANY WARRANTY; without even the implied warranty of
 - # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 - # GNU Affero General Public License for more details.
 - #
 - # You should have received a copy of the GNU Affero General Public License
 - # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 - 
 - METEOR_RELEASE='1.4.4.1'
 - METEOR_REPO="https://github.com/meteor/meteor"
 - METEOR_COMMIT='b52c6587d7542c0f27481a3bee8c65be06068ac1'
 - METEOR_USERACCOUNTS_REPO="git://github.com/meteor-useraccounts/core.git"
 - METEOR_USERACCOUNTS_COMMIT='2e8986813b51f321f908d2f6211f6f81f76cd627'
 - 
 - function meteor_cleanUp {
 -     rm -rf "$TARBALL_FILE"
 -     rm -rf "$INSTALL_TMPDIR"
 - }
 - 
 - function install_meteor_script {
 -     meteor_dir=$1
 - 
 -     if [ ! $meteor_dir ]; then
 -         echo $'No meteor install directory specified'
 -         exit 692025
 -     fi
 - 
 -     if [ ! -d $meteor_dir ]; then
 -         echo $'Meteor install directory not found'
 -         exit 845382
 -     fi
 - 
 -     if [[ "$(arch)" == "arm"* ]]; then
 -         echo 'meteor does not support ARM'
 -         exit 8362952
 -     fi
 -     if [[ "$(arch)" == "i386" || "$(arch)" == "x86_32" ]]; then
 -         PLATFORM="os.linux.x86_32"
 -     else
 -         PLATFORM="os.linux.x86_64"
 -     fi
 - 
 -     RELEASE="$METEOR_RELEASE"
 - 
 -     DIR_PREFIX="/usr/local"
 - 
 -     TARBALL_URL="$https://meteorinstall-4168.kxcdn.com/packages-bootstrap/${RELEASE}/meteor-bootstrap-${PLATFORM}.tar.gz"
 -     INSTALL_TMPDIR="$meteor_dir/.meteor-install-tmp"
 -     TARBALL_FILE="$meteor_dir/.meteor-tarball-tmp"
 - 
 -     # Remove temporary files now in case they exist.
 -     meteor_cleanUp
 - 
 -     if [ -d $INSTALL_TMPDIR ]; then
 -         rm -rf $INSTALL_TMPDIR
 -     fi
 -     mkdir "$INSTALL_TMPDIR"
 - 
 -     if [ ! -f ${TARBALL_FILE} ]; then
 -         echo "Downloading Meteor distribution"
 -         # keep trying to curl the file until it works (resuming where possible)
 -         MAX_ATTEMPTS=10
 -         RETRY_DELAY_SECS=5
 -         set +e
 -         ATTEMPTS=0
 -         while [ $ATTEMPTS -lt $MAX_ATTEMPTS ]
 -         do
 -             ATTEMPTS=$((ATTEMPTS + 1))
 - 
 -             curl --progress-bar --fail --continue-at - \
 -                  "$TARBALL_URL" --output "$TARBALL_FILE"
 - 
 -             if [ $? -eq 0 ]
 -             then
 -                 break
 -             fi
 - 
 -             echo "Retrying download in $RETRY_DELAY_SECS seconds..."
 -             sleep $RETRY_DELAY_SECS
 -         done
 -     fi
 - 
 -     if [ ! -f ${TARBALL_FILE} ]; then
 -         echo $'meteor tarball could not be downloaded'
 -         exit 7272452
 -     fi
 - 
 -     tar -xzf "$TARBALL_FILE" -C "$INSTALL_TMPDIR" -o
 - 
 -     if [ ! -f ${INSTALL_TMPDIR}/.meteor/meteor ]; then
 -         echo $'tarball not extracted'
 -         exit 693252
 -     fi
 - 
 -     mv "${INSTALL_TMPDIR}/.meteor" "$meteor_dir"
 - 
 -     meteor_cleanUp
 - 
 -     echo ''
 -     echo "Meteor ${RELEASE} has been installed in $meteor_dir/.meteor"
 - 
 -     METEOR_SYMLINK_TARGET="$(readlink "$meteor_dir/.meteor/meteor")"
 -     METEOR_TOOL_DIRECTORY="$(dirname "$METEOR_SYMLINK_TARGET")"
 -     LAUNCHER="$meteor_dir/.meteor/$METEOR_TOOL_DIRECTORY/scripts/admin/launch-meteor"
 - 
 -     if cp "$LAUNCHER" "$DIR_PREFIX/bin/meteor" >/dev/null 2>&1; then
 -         echo "Writing a launcher script to $DIR_PREFIX/bin/meteor for your convenience."
 -         cat <<"EOF"
 - 
 - To get started fast:
 - 
 -   $ meteor create ~/my_cool_app
 -   $ cd ~/my_cool_app
 -   $ meteor
 - 
 - Or see the docs at:
 - 
 -   docs.meteor.com
 - 
 - EOF
 -     elif type sudo >/dev/null 2>&1; then
 -         echo "Writing a launcher script to $DIR_PREFIX/bin/meteor for your convenience."
 -         echo "This may prompt for your password."
 - 
 -         # New macs (10.9+) don't ship with /usr/local, however it is still in
 -         # the default PATH. We still install there, we just need to create the
 -         # directory first.
 -         # XXX this means that we can run sudo too many times. we should never
 -         #     run it more than once if it fails the first time
 -         if [ ! -d "$DIR_PREFIX/bin" ] ; then
 -             sudo mkdir -m 755 "$DIR_PREFIX" || true
 -             sudo mkdir -m 755 "$DIR_PREFIX/bin" || true
 -         fi
 - 
 -         if sudo cp "$LAUNCHER" "$DIR_PREFIX/bin/meteor"; then
 -             cat <<"EOF"
 - 
 - To get started fast:
 - 
 -   $ meteor create ~/my_cool_app
 -   $ cd ~/my_cool_app
 -   $ meteor
 - 
 - Or see the docs at:
 - 
 -   docs.meteor.com
 - 
 - EOF
 -         else
 -             cat <<EOF
 - 
 - Couldn't write the launcher script. Please either:
 - 
 -   (1) Run the following as root:
 -         cp "$LAUNCHER" /usr/bin/meteor
 -   (2) Add "\$meteor_dir/.meteor" to your path, or
 -   (3) Rerun this command to try again.
 - 
 - Then to get started, take a look at 'meteor --help' or see the docs at
 - docs.meteor.com.
 - EOF
 -         fi
 -     else
 -         cat <<EOF
 - 
 - Now you need to do one of the following:
 - 
 -   (1) Add "\$meteor_dir/.meteor" to your path, or
 -   (2) Run this command as root:
 -         cp "$LAUNCHER" /usr/bin/meteor
 - 
 - Then to get started, take a look at 'meteor --help' or see the docs at
 - docs.meteor.com.
 - EOF
 -     fi
 - 
 - }
 - 
 - function install_meteor {
 -     apt-get -yq install curl
 -     if [ ! -d $INSTALL_DIR/meteor ]; then
 -         mkdir $INSTALL_DIR/meteor
 -     fi
 -     cd $INSTALL_DIR/meteor
 -     install_meteor_script
 - }
 - 
 - function remove_meteor {
 -     if [ -f /usr/local/bin/meteor ]; then
 -         rm /usr/local/bin/meteor
 -     fi
 -     if [ -f /usr/bin/meteor ]; then
 -         rm /usr/bin/meteor
 -     fi
 - }
 - 
 - # NOTE: deliberately no exit 0
 
 
  |