Created
January 25, 2011 01:02
-
-
Save springmeyer/794326 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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