Last active

Embed URL

HTTPS clone URL

SSH clone URL

You can clone with HTTPS or SSH.

Download Gist

new meteor shell script which alllows execution of node processes with easy access to the MeteorJS environment if it's run as meteor-exec. To make this work, replace /usr/local/meteor/bin/meteor with this file, and add a link from meteor-exec to this.

View meteor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
#!/bin/bash
 
BUNDLE_VERSION=0.2.8
 
# OS Check. Put here because here is where we download the precompiled
# bundles that are arch specific.
UNAME=$(uname)
if [ "$UNAME" != "Linux" -a "$UNAME" != "Darwin" ] ; then
echo "Sorry, this OS is not supported."
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
 
# Find the script dir, following one level of symlink. Note that symlink
# can be relative or absolute. Too bad 'readlink -f' is not portable.
ORIG_DIR=$(pwd)
cd $(dirname "$0")
if [ -L "$(basename $0)" ] ; then
cd $(dirname $(readlink $(basename "$0") ) )
fi
SCRIPT_DIR=$(pwd -P)
cd "$ORIG_DIR"
 
 
 
function install_dev_bundle {
set -e
trap "echo Failed to install dependency kit." EXIT
 
TARBALL="dev_bundle_${UNAME}_${ARCH}_${BUNDLE_VERSION}.tar.gz"
TMPDIR="$SCRIPT_DIR/dev_bundle.xxx"
 
rm -rf "$TMPDIR"
mkdir "$TMPDIR"
 
if [ -f "$SCRIPT_DIR/$TARBALL" ] ; then
echo "Skipping download and installing kit from $SCRIPT_DIR/$TARBALL"
tar -xzf "$SCRIPT_DIR/$TARBALL" -C "$TMPDIR"
else
curl -# https://d3sqy0vbqsdhku.cloudfront.net/$TARBALL | tar -xzf - -C "$TMPDIR"
test -x "${TMPDIR}/bin/node" # bomb out if it didn't work, eg no net
fi
 
mv "$TMPDIR" "$SCRIPT_DIR/dev_bundle"
 
echo "Installed dependency kit v${BUNDLE_VERSION} in dev_bundle."
echo
 
trap - EXIT
set +e
}
 
 
if [ -d "$SCRIPT_DIR/.git" ] || [ -f "$SCRIPT_DIR/.git" ]; then
# In a checkout.
if [ ! -d "$SCRIPT_DIR/dev_bundle" ] ; then
echo "It's the first time you've run Meteor from a git checkout."
echo "I will download a kit containing all of Meteor's dependencies."
install_dev_bundle
elif [ ! -f "$SCRIPT_DIR/dev_bundle/.bundle_version.txt" ] ||
grep -qvx "$BUNDLE_VERSION" "$SCRIPT_DIR/dev_bundle/.bundle_version.txt" ; then
echo "Your dependency kit is out of date. I will download the new one."
rm -rf "$SCRIPT_DIR/dev_bundle"
install_dev_bundle
fi
 
DEV_BUNDLE="$SCRIPT_DIR/dev_bundle"
METEOR="$SCRIPT_DIR/app/meteor/meteor.js"
else
# In an install
DEV_BUNDLE=$(dirname "$SCRIPT_DIR")
METEOR="$DEV_BUNDLE/app/meteor/meteor.js"
fi
 
 
# Bump our file descriptor ulimit as high as it will go. This is a
# temporary workaround for dependancy watching holding open too many
# files: https://app.asana.com/0/364581412985/472479912325
if [ "$(ulimit -n)" != "unlimited" ] ; then
ulimit -n 16384 > /dev/null 2>&1 || \
ulimit -n 8192 > /dev/null 2>&1 || \
ulimit -n 4096 > /dev/null 2>&1 || \
ulimit -n 2048 > /dev/null 2>&1 || \
ulimit -n 1024 > /dev/null 2>&1 || \
ulimit -n 512 > /dev/null 2>&1
fi
 
NPM_GLOBAL_PATH=$(npm root -g)
METEOR_THIRD_PARTY="$DEV_BUNDLE/app/lib/third"
case $(basename $0) in
meteor)
export NODE_PATH="$DEV_BUNDLE/lib/node_modules"
exec "$DEV_BUNDLE/bin/node" "$METEOR" "$@"
;;
meteor-exec)
export NODE_PATH="$DEV_BUNDLE/lib/node_modules:$METEOR_THIRD_PARTY:$DEV_BUNDLE/packages:$NPM_GLOBAL_PATH"
exec "$DEV_BUNDLE/bin/node" "$@"
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.