Skip to content

Instantly share code, notes, and snippets.

@springmeyer
Created January 25, 2011 01:02
Show Gist options
  • Save springmeyer/794326 to your computer and use it in GitHub Desktop.
Save springmeyer/794326 to your computer and use it in GitHub Desktop.
diff --git a/bin/ndistro b/bin/ndistro
index 537261f..a155ebf 100755
--- a/bin/ndistro
+++ b/bin/ndistro
@@ -11,8 +11,9 @@
VERSION="0.4.0"
DIR=${0%/*}
-ROOT=$(pwd)
+ROOT="$(pwd)"
BIN_URL="http://github.com/visionmedia/nodes/raw/master"
+PREFIX=
GET=
# wget support
@@ -46,16 +47,16 @@ log() {
#
module() {
- local user=$1
- local mod=$2
- local version=${3-master}
- local alias_as=$4
+ local user="$1"
+ local mod="$2"
+ local version="${3-master}"
+ local alias_as="$4"
local dest="$ROOT/modules/$mod"
- local version_file=$dest/.ndistro_module_version
+ local version_file="$dest/.ndistro_module_version"
local url="https://github.com/$user/$mod/tarball/$version"
local update_message="update with $ rm -fr modules/$mod && ndistro"
- if test -d $dest; then
+ if test -d "$dest"; then
if test -f $version_file; then
if test "$(cat $version_file)" != "$version"; then
log "outdated module $mod $(cat $version_file) (requested $version)"
@@ -69,15 +70,15 @@ module() {
fi
else
log "installing $mod $version"
- mkdir -p $dest
- cd $dest \
+ mkdir -p "$dest"
+ cd "$dest" \
&& $GET $url \
| tar -xz --strip 1 \
&& cd ../.. \
- && bin $mod \
- && build $mod \
- && lib $mod $alias_as \
- && echo "$version" > $version_file
+ && bin "$mod" \
+ && build "$mod" \
+ && lib "$mod" "$alias_as" \
+ && echo "$version" > "$version_file"
fi
}
@@ -88,18 +89,18 @@ module() {
#
bin() {
- if test -d $ROOT/modules/$mod/bin; then
- cd $ROOT/bin
- for bin in ../modules/$mod/bin/*; do
+ if test -d "$ROOT/modules/$mod/bin"; then
+ cd "$ROOT/bin"
+ for bin in "../modules/$mod/bin/*"; do
local name=${bin##*/}
log "installing bin/$name"
local shebang=$(head -n 1 $bin)
if test "$shebang" = "#!/usr/bin/env node"; then
- sed "s|/usr/bin/env node|$ROOT/bin/node|" $bin \
- > ./$name \
- && chmod a+x ./$name
+ sed "s|/usr/bin/env node|\"$ROOT/bin/node\"|" $bin \
+ > "./$name" \
+ && chmod a+x "./$name"
else
- ln -sf $bin ./$name
+ ln -sf "$bin" "./$name"
fi
done
cd ..
@@ -112,10 +113,10 @@ bin() {
build() {
local mod=$1
- if test -f $ROOT/modules/$mod/wscript; then
+ if test -f "$ROOT/modules/$mod/wscript"; then
log "building $mod"
- cd $ROOT/modules/$mod \
- && node-waf configure build
+ cd "$ROOT/modules/$mod" \
+ && "$ROOT/bin/node-waf" --prefix="$ROOT" configure build
fi
}
@@ -124,28 +125,28 @@ build() {
#
lib() {
- local mod=$1
- local alias_as=$2
- local moddir=$mod
+ local mod="$1"
+ local alias_as="$2"
+ local moddir="$mod"
if test -n "$alias_as"; then
- moddir=$alias_as
+ moddir="$alias_as"
fi
- mkdir -p $ROOT/lib/node
- if test -f $ROOT/modules/$mod/index.js; then
- cd $ROOT/lib/node
- ln -sf ../../modules/$mod ./$moddir
+ mkdir -p "$ROOT/lib/node"
+ if test -f "$ROOT/modules/$mod/index.js"; then
+ cd "$ROOT/lib/node"
+ ln -sf "../../modules/$mod" "./$moddir"
cd ../..
- elif test -d $ROOT/modules/$mod/lib; then
- cd $ROOT/lib/node
+ elif test -d "$ROOT/modules/$mod/lib"; then
+ cd "$ROOT/lib/node"
if test "$moddir" != "$mod"; then
moddir="./$moddir"
else
moddir="./"
fi
- ln -sf ../../modules/$mod/lib/* $moddir
- cd ../..
+ ln -sf "../../modules/$mod/lib" "$moddir"
+ cd "../.."
fi
}
@@ -154,8 +155,8 @@ lib() {
#
install_node() {
- local version=$1
- local machine=$2
+ local version="$1"
+ local machine="$2"
local url="$BIN_URL/$version-$machine"
log "installing node-$version-$machine"
$GET $url > bin/node && chmod 0755 bin/node
@@ -168,35 +169,35 @@ install_node() {
node() {
if test $2; then
- local machine=$2
+ local machine="$2"
else
local machine=$(uname -m)
fi
if test $1 = "latest"; then
log "fetching latest node"
local latest=$($GET "$BIN_URL/latest" 2> /dev/null)
- if test -f $ROOT/bin/node; then
- local version=$($ROOT/bin/node --version)
+ if test -f "$ROOT/bin/node"; then
+ local version=$("$ROOT/bin/node" --version)
if test $version = "v$latest"; then
log "already up to date"
else
log "updating $version to v$latest"
- install_node $latest $machine
+ install_node "$latest" "$machine"
fi
else
- install_node $latest $machine
+ install_node "$latest" "$machine"
fi
else
- if test -f $ROOT/bin/node; then
- local version=$($ROOT/bin/node --version)
+ if test -f "$ROOT/bin/node"; then
+ local version=$("$ROOT/bin/node" --version)
if test "$version" = "v$1"; then
log "already installed node $1"
else
log "updating from node $version"
- install_node $1 $machine
+ install_node "$1" "$machine"
fi
else
- install_node $1 $machine
+ install_node "$1" "$machine"
fi
fi
}
@@ -206,12 +207,12 @@ node() {
#
install() {
- mkdir -p $ROOT/bin
- if test -f $ROOT/.ndistro; then
- . $ROOT/.ndistro
+ mkdir -p "$ROOT/bin"
+ if test -f "$ROOT/.ndistro"; then
+ . "$ROOT/.ndistro"
log "installation complete"
else
- abort ".ndistro not found in this directory"
+ abort ".ndistro not found in this directory: " "$ROOT/.ndistro"
fi
}
@@ -220,8 +221,8 @@ install() {
#
install_user_distro() {
- local user=$1
- local distro=$2
+ local user="$1"
+ local distro="$2"
log "fetching $user $distro"
$GET "http://github.com/$user/.ndistro/raw/master/$distro" > .ndistro \
&& install
@@ -257,6 +258,7 @@ Commands:
Options:
+ --prefix node prefix (to build addons against)
-V, --version Output version number
-h, --help Output help information
@@ -275,6 +277,9 @@ else
-V|--version)
echo $VERSION && exit 1
;;
+ --prefix)
+ echo $VERSION && exit 1
+ ;;
update)
log "updating $0"
rm -fr /tmp/ndistro \
@@ -287,8 +292,8 @@ else
$EDITOR $ROOT/.ndistro
;;
*)
- test $# -eq 1 && list_user_distros $1
- test $# -eq 2 && install_user_distro $1 $2
+ test $# -eq 1 && list_user_distros "$1"
+ test $# -eq 2 && install_user_distro "$1" "$2"
;;
esac
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment