mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
85 lines
3.1 KiB
Bash
Executable File
85 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This is the script that we install somewhere in your $PATH (as "meteor")
|
|
# when you run
|
|
# $ curl https://install.meteor.com/ | sh
|
|
# In fact, all that the curl script does is install this script and run it
|
|
# once. It's the only file that we install globally on your system; each user of
|
|
# Meteor gets their own personal package and tools repository, called the
|
|
# warehouse, in ~/.meteor/. This means that a user can share packages among
|
|
# multiple apps and automatically update to new releases without having to have
|
|
# permissions to write them to anywhere global.
|
|
#
|
|
# All this script does is exec ~/.meteor/meteor. But what if you don't have it
|
|
# yet? In that case, it downloads a "bootstrap tarball", which contains the
|
|
# latest version of the Meteor tools, and plops it down at ~/.meteor. In fact,
|
|
# once you've run this once, you don't even really need this script: you can put
|
|
# ~/.meteor/ into your PATH, or a symlink to ~/.meteor/meteor into some other
|
|
# PATH directory. No special permissions needed!
|
|
#
|
|
# To uninstall Meteor from your system, just delete this shell script, and
|
|
# delete your warehouse (~/.meteor/).
|
|
#
|
|
# We'll keep around a copy of this file at
|
|
# ~/.meteor/engines/latest/launch-meteor just in case you ever want to find it
|
|
# again.
|
|
|
|
|
|
set -e
|
|
set -u
|
|
set -o pipefail # so curl failure triggers the "set -e"
|
|
|
|
BOOTSTRAP_URL='https://install-bootstrap.meteor.com/'
|
|
|
|
if [ ! -x "$HOME/.meteor/meteor" ]; then
|
|
if [ -e "$HOME/.meteor" ]; then
|
|
echo "'$HOME/.meteor' exists, but '$HOME/.meteor/meteor' is not executable."
|
|
echo
|
|
echo "Remove it and try again."
|
|
exit 1
|
|
fi
|
|
|
|
# Bootstrap .meteor from a tarball. First, figure out our architecture.
|
|
|
|
UNAME=$(uname)
|
|
if [ "$UNAME" != "Linux" -a "$UNAME" != "Darwin" ] ; then
|
|
echo "Sorry, this OS is not supported yet."
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$UNAME" = "Darwin" ] ; then
|
|
if [ "i386" != $(uname -p) -o "1" != $(sysctl -n hw.cpu64bit_capable 2>/dev/null || echo 0) ] ; then
|
|
# Can't just test uname -m = x86_64, because Snow Leopard can
|
|
# return other values.
|
|
echo "Only 64-bit Intel processors are supported at this time."
|
|
exit 1
|
|
fi
|
|
ARCH="x86_64"
|
|
elif [ "$UNAME" = "Linux" ] ; then
|
|
ARCH="$(uname -m)"
|
|
if [ "$ARCH" != "i686" -a "$ARCH" != "x86_64" ] ; then
|
|
echo "Unsupported architecture: $ARCH"
|
|
echo "Meteor only supports i686 and x86_64 for now."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# This returns something like https://warehouse.meteor.com/tools/db68972b9d239a95bffa3abe652d1e17815dba91
|
|
ROOT_URL="$(curl -s --fail $BOOTSTRAP_URL)"
|
|
TARBALL_URL="${ROOT_URL}/meteor-tools-bootstrap-${UNAME}-${ARCH}.tar.gz"
|
|
|
|
INSTALL_TMPDIR="$HOME/.meteor-install-tmp"
|
|
rm -rf "$INSTALL_TMPDIR"
|
|
mkdir "$INSTALL_TMPDIR"
|
|
echo 'This is your first time using Meteor! Downloading the tools now.'
|
|
curl --progress-bar --fail "$TARBALL_URL" | tar -xzf - -C "$INSTALL_TMPDIR"
|
|
# bomb out if it didn't work, eg no net
|
|
test -x "${INSTALL_TMPDIR}/.meteor/meteor"
|
|
mv "${INSTALL_TMPDIR}/.meteor" "$HOME"
|
|
rmdir "${INSTALL_TMPDIR}"
|
|
# just double-checking :)
|
|
test -x "$HOME/.meteor/meteor"
|
|
fi
|
|
|
|
exec "$HOME/.meteor/meteor" "$@"
|