Rev 30 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#!/bin/sh# erlwareSys: otp/build/beamver,v 1.1 2002/02/14 11:45:20 hal Exp $# usage: beamver <beam_file>## if there's a usable -vsn() attribute, print it and exit with status 0# otherwise, print nothing and exit with status 1# From the Erlang shell:## 5> code:which(acca_inets).# "/home/martin/work/otp/releases/<app>/../../acca/ebin/<app>.beam"## 8> beam_lib:version(code:which(<app>)).# {ok,{<app>,['$Id: beamver,v 1.1.1.1 2003/06/13 21:43:21 mlogan Exp $ ']}}# TMPFILE looks like this:## io:format("hello ~p~n",# beam_lib:version("/home/hal/work/otp/acca/ebin/acca_inets.beam")]).TMPFILE=/tmp/beamver.$$# exit with failure if we can't read the filetest -f "$1" || exit 1BEAMFILE=\"$1\"cat > $TMPFILE <<_EOFio:format("~p~n",[beam_lib:version($BEAMFILE)])._EOF# beam_result is {ok,{Module_name, Beam_version} or {error,beam_lib,{Reason}}beam_result=`erl -noshell \-s file eval $TMPFILE \-s erlang halt`rm -f $TMPFILE# sed regexes:# remove brackets and anything outside them# remove quotes and anything outside them# remove apostrophes and anything outside them# remove leading and trailing spacescase $beam_result in\{ok*)echo $beam_result | sed -e 's/.*\[\(.*\)].*/\1/' \-e 's/.*\"\(.*\)\".*/\1/' \-e "s/.*\'\(.*\)\'.*/\1/" \-e 's/ *$//' -e 's/^ *//'exit 0;;*)exit 1;;esac