thrift/lib/erl/build/beamver
David Reiss 9f2a5d7799 Rename "alterl" to "erl".
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666481 13f79535-47bb-0310-9956-ffa450edef68
2008-06-11 01:15:45 +00:00

60 lines
1.4 KiB
Bash

#!/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 file
test -f "$1" || exit 1
BEAMFILE=\"$1\"
cat > $TMPFILE <<_EOF
io: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 spaces
case $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