#!/bin/sh # Shell script implementing the Aliens interface for luarocks. # Copyright 2009 Michael Homer. Released under the GNU GPL 2 or later. getversion() { prog="$1" luarocks list "$prog" | awk ' { if (found) { print $1 exit } } /^'"$prog"'$/ { found=1 }' } in_version_range() { lower="$1" ver="$2" upper="$3" [ "$ver" ] || return 1 [ "$ver" != "$lower" -a "$(GuessLatest "$ver" "$lower")" = "$lower" ] && return 1 [ "$upper" ] || return 0 [ "$(GuessLatest "$ver" "$upper")" = "$upper" ] || return 1 [ "$ver" = "$upper" -a "$ver" != "$lower" ] && return 1 return 0 } getinstallversion() { prog="$1" for V in $(luarocks search "$prog" | awk ' /^$/ && found { exit } found { print $1 } /^'"$prog"'$/ { found=1 }') do if in_version_range "$2" "$V" "$3" then echo $V return 0 fi done } install() { prog="$1" ver="$2" luarocks install "$prog" "$ver" } command="$1" prog="$2" case "$command" in --getversion) echo $(getversion "$2") ;; --getinstallversion) echo $(getinstallversion "$2" "$3" "$4") ;; --greater-than) ver=$(getversion "$2") latest=$(GuessLatest "$ver" "$3") [ "$latest" = "$3" ] && exit 1 || exit 0 ;; --met|--within-range|--interval) prog="$2" lower="$3" upper="$4" ver=$(getversion "$2") in_version_range "$lower" "$ver" "$upper" ;; --have-manager) which luarocks >/dev/null 2>&1 || exit 1 ;; --get-manager-rule) echo "LuaRocks >= 1.0" ;; --install) install "$2" "$3" ;; esac # is ridiculous