Create a gist now

Instantly share code, notes, and snippets.

Updates the lwjgl that minecraft uses.
#!/usr/bin/env bash
echo "Determining OS..."
if [[ "$(uname -s)" == "Linux" ]]; then
mcdir="$HOME/.minecraft/"
downloader="wget --no-check-certificate -q -O"
os="linux"
natives="libjinput-linux libjinput-linux64 liblwjgl liblwjgl64 libopenal libopenal64"
elif [[ "$(uname -s)" == "Darwin" ]]; then
mcdir="$HOME/Library/Application\ Support/minecraft/"
downloader="curl -o"
os="macosx"
natives="libjinput-osx.jnilib liblwjgl.jnilib openal.dylib"
else
echo "OS not supported. Exploding..."
exit 1
fi
echo "Determining installed LWJGL version..."
installed="$(unzip -p $mcdir/bin/lwjgl.jar | strings | grep '^[0-9]*\.[0-9]*\.[0-9]*')"
echo "LWJGL $installed installed"
echo "Determining latest online version..."
latest=$(${downloader%%-o} - http://lwjgl.org/download.php |\
grep -oE "https?:\/\/sourceforge.net\/projects\/java-game-lib\/files\/Official%20Releases\/LWJGL%20[0-9|\.]*")
echo "Found version ${latest##*%20}"
if [[ "${latest##*%20}" == "$installed" ]]; then
echo "LWJGL already at current version."
if [[ "$1" == "-force" ]]; then
echo "Updating anyways..."
else
exit 0
fi
fi
echo "Determining download URL..."
dlurl=$(${downloader%%-o} - "$latest" |\
grep -oE -m1 "https?://sourceforge.net/projects/java-game-lib/files/Official%20Releases/LWJGL%20[0-9|\.]*/lwjgl-[0-9|\.]*.zip")
echo "Checking if ~./cache/ exists..."
if [[ ! -d "$HOME/.cache/" ]]; then
echo "~/.cache/ did not exist. Creating..."
mkdir "$HOME/.cache/"
fi
echo "Downloading latest LWJGL..."
$downloader "$HOME/.cache/lwjgl.zip" "$dlurl"
echo "Extracting zip file..."
unzip -qqo "$HOME/.cache/lwjgl.zip" -d "$HOME/.cache/"
lwjgldir=$(find -L "$HOME/.cache" -maxdepth 1 -type d -name "*lwjgl*" -print)
echo "Copying files..."
for i in "jinput" "lwjgl" "lwjgl_util"; do
echo "Copying $i..."
cp "$lwjgldir/jar/$i.jar" "$mcdir/bin/"
done
for i in $natives; do
echo "Copying $i..."
cp "$lwjgldir/native/$os/$i.so" "$mcdir/bin/natives/"
done
echo "Deleting cache..."
rm -rf "$lwjgldir"
@fndragon

Change line 62 to lwjgldir=$(find -L "$HOME/.cache" -maxdepth 1 -type d -name "lwjgl" -print)

This way if your home directory has a symbolic link for .cache (I have a symbolic link there for speed), find correctly points to the lwjgl directory extracted by unzip.

@aperson
Owner
aperson commented Mar 16, 2013

I've updated the script accordingly. thanks!

@MestreLion

It's great to see more people and scripts using XDG dirs like ~/.config, ~/.local, ~/.cache, etc to unclutter user's $HOME, so kudos for that! And, if you want to further improve that, use cachedir=${XDG_CACHE_HOME:-"$HOME/.cache"} instead of hardcoding "$HOME/.cache". Remember all XDG dirs are configurable via env vars, and ~/.cache is just a default. Also, setting this value in a cachedir var somewhere near the top will allow you to avoid repeating it over and over through the code..

@pbhj
pbhj commented Feb 5, 2014

Make sure you run it as bash, I used "sh" and on my Kubuntu that's symlinked to dash (I didn't realise). That gives a couple of errors on the [[ tests. using "bash update.sh" worked fine, thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment