Create a gist now

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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

This comment has been minimized.

Show comment
Hide comment
@fndragon

fndragon Mar 15, 2013

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.

fndragon commented Mar 15, 2013

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

This comment has been minimized.

Show comment
Hide comment
@aperson

aperson Mar 16, 2013

I've updated the script accordingly. thanks!

Owner

aperson commented Mar 16, 2013

I've updated the script accordingly. thanks!

@MestreLion

This comment has been minimized.

Show comment
Hide comment
@MestreLion

MestreLion Mar 21, 2013

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..

MestreLion commented Mar 21, 2013

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

This comment has been minimized.

Show comment
Hide comment
@pbhj

pbhj 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.

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