Skip to content

Instantly share code, notes, and snippets.

@michaelsbradleyjr
Created July 20, 2011 06:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save michaelsbradleyjr/1094440 to your computer and use it in GitHub Desktop.
Save michaelsbradleyjr/1094440 to your computer and use it in GitHub Desktop.
proposed postinstall routine for "collected" jsan
#!/bin/bash
#PODNAME: postinstall.sh
CURRENT_PKG_DIR=$(pwd)
NPM_ROOT=$(npm root 2>/dev/null)
ONE_UP_NPM_ROOT="$NPM_ROOT/../.."
mkdir -p "$NPM_ROOT"
mkdir -p "$NPM_ROOT/.jsan"
mkdir -p "$NPM_ROOT/.jsanver"
mkdir -p "$ONE_UP_NPM_ROOT/.jsan"
mkdir -p "$ONE_UP_NPM_ROOT/.jsanver"
print_key() {
CONTENT=$(cat $1)
KEY=$(node -e "($CONTENT).$2")
}
compare_versions() {
CMP_RES=$(node -e "require('$CURRENT_PKG_DIR/__script/semver').compare('$1', '$2')")
}
# For node_modules within the current package
print_key ./package.json name
DIST_NAME=$KEY
DIST_VER_FILE="$NPM_ROOT/.jsanver/$DIST_NAME.json"
DIST_VER_TARB="$NPM_ROOT/.jsanver/$DIST_NAME.tar.gz"
print_key ./package.json version
GOING_TO_INSTALL=$KEY
if [ -e "$DIST_VER_FILE" ]
then
print_key $DIST_VER_FILE version
ALREADY_HAS=$KEY
echo "Version file exists for: $DIST_VER_FILE, we have $ALREADY_HAS and installing $GOING_TO_INSTALL"
compare_versions $ALREADY_HAS $GOING_TO_INSTALL
if [ $CMP_RES -eq "1" ]
then
echo "Already have a newer version, skipping..."
else
echo "Copying $DIST_NAME 'lib/*' to $NPM_ROOT/.jsan"
cp -R ./lib/* "$NPM_ROOT/.jsan"
echo "Copying $DIST_NAME.json to $NPM_ROOT/.jsanver"
cp -R ./package.json $DIST_VER_FILE
echo "Packing $DIST_NAME 'lib/*' to $NPM_ROOT/.jsanver/$DIST_NAME.tar.gz"
tar -czf $DIST_VER_TARB ./lib/
fi
else
echo "Copying $DIST_NAME 'lib/*' to $NPM_ROOT/.jsan"
cp -R ./lib/* "$NPM_ROOT/.jsan"
echo "Copying $DIST_NAME.json to $NPM_ROOT/.jsanver"
cp -R ./package.json $DIST_VER_FILE
echo "Packing $DIST_NAME 'lib/*' to $NPM_ROOT/.jsanver/$DIST_NAME.tar.gz"
tar -czf $DIST_VER_TARB ./lib/
fi
# For the directory above the current package, i.e. node_modules inside the dir in which the user
# ran `npm install <pkg>`
cd "$NPM_ROOT/.jsanver"
for ver in $(find . -name '*.json')
do
bname=$(basename "$ver")
print_key "$NPM_ROOT/.jsanver/$bname" name
DIST_NAME=$KEY
DIST_VER_FILE="$NPM_ROOT/.jsanver/$DIST_NAME.json"
DIST_VER_TARB="$NPM_ROOT/.jsanver/$DIST_NAME.tar.gz"
ONE_UP_DIST_VER_FILE="$ONE_UP_NPM_ROOT/.jsanver/$DIST_NAME.json"
print_key $DIST_VER_FILE version
GOING_TO_INSTALL=$KEY
if [ -e "$ONE_UP_DIST_VER_FILE" ]
then
print_key $ONE_UP_DIST_VER_FILE version
ALREADY_HAS=$KEY
echo "Version file exists for: $ONE_UP_DIST_VER_FILE, we have $ALREADY_HAS and installing $GOING_TO_INSTALL"
compare_versions $ALREADY_HAS $GOING_TO_INSTALL
if [ $CMP_RES -eq "1" ]
then
echo "Already have a newer version, skipping..."
else
echo "Unpacking $DIST_VER_TARB"
mkdir temp
cd temp
tar xzf "$DIST_VER_TARB"
echo "Copying unpacked tarball 'lib/*' to $ONE_UP_NPM_ROOT/.jsan"
cp -R ./lib/* "$ONE_UP_NPM_ROOT/.jsan"
cd ..
echo "Deleting temporary files"
rm -rf temp
echo "Copying $DIST_NAME.tar.gz and $DIST_NAME.json to $ONE_UP_NPM_ROOT/.jsanver"
cp "$DIST_VER_FILE" "$ONE_UP_NPM_ROOT/.jsanver/"
cp "$DIST_VER_TARB" "$ONE_UP_NPM_ROOT/.jsanver/"
cd "$CURRENT_PKG_DIR"
fi
else
echo "Unpacking $DIST_VER_TARB"
mkdir temp
cd temp
tar xzf "$DIST_VER_TARB"
echo "Copying unpacked tarball 'lib/*' to $ONE_UP_NPM_ROOT/.jsan"
cp -R ./lib/* "$ONE_UP_NPM_ROOT/.jsan"
cd ..
echo "Deleting temporary files"
rm -rf temp
echo "Copying $DIST_NAME.tar.gz and $DIST_NAME.json to $ONE_UP_NPM_ROOT/.jsanver"
cp "$DIST_VER_FILE" "$ONE_UP_NPM_ROOT/.jsanver/"
cp "$DIST_VER_TARB" "$ONE_UP_NPM_ROOT/.jsanver/"
cd "$CURRENT_PKG_DIR"
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment