Skip to content

Commit

Permalink
add argument passing to before operations; clean up multitool; add ve…
Browse files Browse the repository at this point in the history
…rsion specifier code to update; clean up version regex
  • Loading branch information
ohrite committed May 24, 2011
1 parent b02edaf commit ecf41be
Show file tree
Hide file tree
Showing 7 changed files with 83 additions and 14 deletions.
4 changes: 2 additions & 2 deletions bin/functions/_route.inc
Expand Up @@ -47,7 +47,7 @@ route_perform ()
then
for step in `route_before $endpoint`
do
eval $step
eval $step \$args
done

eval $endpoint \$args
Expand All @@ -59,7 +59,7 @@ route_perform ()
then
for step in `route_before $ROUTE_DEFAULT`
do
eval $step
eval $step \$args
done

eval $ROUTE_DEFAULT \$full
Expand Down
29 changes: 25 additions & 4 deletions bin/functions/update.inc
Expand Up @@ -16,7 +16,7 @@ Flags:
-v|--version - specify the version of Cascading.Multitool to fetch
USAGE

mt_update_latest="20110518"
mt_update_latest=
mt_update_base="http://files.cascading.org/multitool"
mt_update_latest_location="http://www.cascading.org/downloads.html"
mt_update_latest_extractor='s/.*multitool-\([^\.]*\)\.tgz.*/\1/g'
Expand Down Expand Up @@ -44,14 +44,35 @@ mt_update_curl ()

mt_update_parse_latest ()
{
info "INFO Parsing version number from $mt_update_latest_location"
mt_update_latest=`mt_update_curl $mt_update_latest_location | grep "$mt_update_base" | sed $mt_update_latest_extractor`
while [ $# -gt 0 ]
do
case "$1" in
--version=*)
mt_update_latest=`echo $1 | sed 's/--version=\(.*\)/\1/g'`
;;
-v|--version)
mt_update_latest=$2
break 1
;;
*)
error "ERROR Invalid option $1"
exit 1
;;
esac
shift
done

if [ -z "$mt_update_latest" ]
then
info "INFO Parsing version number from $mt_update_latest_location"
mt_update_latest=`mt_update_curl $mt_update_latest_location | grep "$mt_update_base" | sed $mt_update_latest_extractor`
fi
}

mt_update ()
{
TMPDIR=`mktemp -d /tmp/cascading_multitool-mt_update.XXXXXX`

info "INFO Fetching $mt_update_base/multitool-$mt_update_latest.tgz"
mt_update_curl --progress-bar -o $TMPDIR/latest.tgz $mt_update_base/multitool-$mt_update_latest.tgz

Expand Down
2 changes: 1 addition & 1 deletion bin/functions/version.inc
Expand Up @@ -2,7 +2,7 @@

module_depends log hadoop jar

route_match "^(version|-v|--version)$" mt_version
route_match "^version|-v|--version$" mt_version
route_before mt_version mt_hadoop mt_jar

module_annotate version about "displays version information"
Expand Down
2 changes: 1 addition & 1 deletion bin/multitool
Expand Up @@ -29,7 +29,7 @@ module_depends run update install uninstall help command version

multitool_run ()
{
while [ $# -gt 0 ];
while [ $# -gt 0 ]
do
case "$1" in
-q|--quiet)
Expand Down
16 changes: 14 additions & 2 deletions src/test/mt/_route_test.sh
Expand Up @@ -62,8 +62,6 @@ it_should_route_the_default_with_arguments () {
}

it_should_run_before_filters_before_routing () {
did_pre=false
tested=true
do_pre () {
did_pre=true
}
Expand All @@ -72,6 +70,20 @@ it_should_run_before_filters_before_routing () {
}
route_before do_testing do_pre
route_perform testing
test "$tested" = "true"
}

it_should_run_before_filters_with_arguments () {
ROUTE_do_testing="^testing"
do_pre () {
[ "$*" = "foo bar" ] && did_pre=true
}
do_testing () {
[ "$did_pre" = "true" ] && tested=true
}
route_before do_testing do_pre
route_perform testing foo bar
test "$tested" = "true"
}

it_should_run_multiple_before_filters () {
Expand Down
43 changes: 39 additions & 4 deletions src/test/mt/update_test.sh
Expand Up @@ -10,7 +10,6 @@ before () {
}

it_routes () {
tested=false
mt_update () {
tested=true
}
Expand All @@ -21,18 +20,54 @@ it_routes () {
it_parses_the_multitool_location () {
test "$mt_update_latest" != "latest"
CURL_BIN="echo 'http://files.cascading.org/multitool/multitool-latest.tgz'"
mt_update () {
tested=true
}
route_perform update
test "$mt_update_latest" = "latest"
}

it_allows_a_version_specifier () {
test "$mt_update_latest" != "latest"
mt_update () {
tested=true
}

route_perform update -v latest
test "$mt_update_latest" = "latest"

tested=
route_perform update --version=some_other
test "$mt_update_latest" = "some_other"
}

it_unpacks_a_tarball_into_position () {
MT_PATH=/does/not/exist

mt_update_parse_latest () {
mt_update_latest="some_version"
}
mt_update_curl () {
TEMP_DIR=`dirname $3`
test `basename $3` = "latest.tgz"
}
route_perform update
test "0" = "1"

mkdir () {
[ "$1" = "$TEMP_DIR/extracted" ] && mkdir_called=true
}
tar () {
[ "$2" = "$TEMP_DIR/latest.tgz" ] && [ "$4" = "$TEMP_DIR/extracted" ] && tar_called=true
}
rm () {
[ "$2" = "$MT_PATH" ] || [ "$2" = "$TEMP_DIR" ] && rm_called=true
}
cp () {
[ "$2" = "$TEMP_DIR/extracted//" ] && [ "$3" = "$MT_PATH" ] && cp_called=true
}

mt_update

test "$mkdir_called" = "true"
test "$tar_called" = "true"
test "$rm_called" = "true"
test "$cp_called" = "true"
}
1 change: 1 addition & 0 deletions src/test/mt/version_test.sh
Expand Up @@ -6,6 +6,7 @@ describe "version.inc"

before () {
mt_jar_avoid_exit=1
mt_hadoop_avoid_exit=1
HADOOP_BIN=echo
mt_jar_path=/
module_depends _route version
Expand Down

0 comments on commit ecf41be

Please sign in to comment.