#!/bin/bash # set -x # getBlender28 # get and unpack latest 2.8 blender from # https://builder.blender.org/download # This scripts assumes a lot = fragile. # required command -v wget >/dev/null 2>&1 || { >&2 echo "I need wget." ; exit 1; } command -v awk >/dev/null 2>&1 || { >&2 echo "I need awk (gawk)." ; exit 1; } command -v lynx >/dev/null 2>&1 || { >&2 echo "I need lynx." ; exit 1; } command -v tar >/dev/null 2>&1 || { >&2 echo "I need tar." ; exit 1; } # install to where, subdir blender will be made where="$HOME/apps" # ^ You can change this. # emtpy url url="" # for what platform (example x86_64) bits=$(uname -m) echo "$bits" # make apps dir in user home if there is not one already mkdir -p "$where" # tmp dir http://mywiki.wooledge.org/BashFAQ/062 tmpdir="/tmp/$RANDOM-$$" trap '[ -n "$tmpdir" ] && rm -fr "$tmpdir"' EXIT mkdir -m 700 "$tmpdir" || { echo '!! unable to create a tmpdir' >&2; tmpdir=; exit 1; } # action url="$(lynx -listonly -nonumbers -dump https://builder.blender.org/download/ | grep "$bits.tar" | grep '2.8' | head -1)" [[ -z "$url" ]] && (echo "no blender for you" && exit 1) if [[ -d $where/blender28 ]]; then # remote to local version compare (by damo) # hash1=latest from blender.org hash1=$(echo "$url" | awk -F "-" '{print $3}') && echo "builder.blender.org: $hash1" # hash2= installed version buildhash2=$(echo "$($where/blender28/blender -v)" | grep hash) hash2=${buildhash2##* } && echo "Installed: $hash2" if [[ "$hash1" == "$hash2" ]];then echo "No updates today." exit 0 # if remote version is the same we exit here. fi fi # download to $tmpdir echo "downloading from $url" wget "$url" -O "$tmpdir/blender-tmp" mkdir "$tmpdir/blender28" && echo "unpacking to $tmpdir/blender28" tar xjf "$tmpdir/blender-tmp" --directory "$tmpdir/blender28" --strip-components=1 # move away old one [[ -d $where/blender28 ]] && mv "$where/blender28" "$where/blender28_bak_$RANDOM" # mv new 'blender' dir to ~/apps/blender mv "$tmpdir/blender28" "$where/" # inform [[ -d $where/blender28 ]] && echo "Your new blender 2.8 should be in $where/blender28"