Index: tv_grab_au
===================================================================
--- tv_grab_au (revision 185)
+++ tv_grab_au (revision 187)
@@ -1,4 +1,7 @@
 #!/usr/bin/perl -w
 
+my $version = '0.3.1';
+
+# tv_grab_au
 # "Shepherd"
 # A wrapper for various Aussie TV guide data grabbers
@@ -22,38 +25,10 @@
 #                        (e.g. flag HDTV programmes, augment with IMDb etc.)
 
-my $version = '0.2.32';
-
 # Changelog:
-# 0.1.0   : Basic self-updating and grabber management
-# 0.2.0   : --configure
-# 0.2.1   : Has a home in ~/.shepherd/
-# 0.2.2   : --check
-# 0.2.3   : Bugfix: archives correctly
-# 0.2.5   : Multi-grabber (potentially with partial data)
-# 0.2.6   : Postprocessor support
-# 0.2.7   : Changed online file structure
-# 0.2.8   : Integrated reconciler
-# 0.2.9   : Grabber config support
-# 0.2.10  : Bugfix: don't call postprocessors that aren't ready,
-#           rework accept-data-or-not postprocessor logic
-# 0.2.11  : Dedicated external reconciler support
-# 0.2.13  : revert 'alawys run' added in 0.2.12, --setorder bugfix
-# 0.2.14  : Changed online status file format
-# 0.2.15  : Intelli-random grabber ordering now kinda works
-# 0.2.16  : config logic for HD channels
-# 0.2.17  : bugfix timezone bogosities
-# 0.2.18  : care less about missing data in early-morning/overnight
-#           care more about missing data in evening/night
-# 0.2.22  : remove ->{order}, order is now set by quality
-#           explicitly tell reconciler the preferred _title_ source
-# 0.2.24  : logging and log files
-# 0.2.25  : use open-with-pipe rather than system() and look at
-#           return codes from called programmes
-# 0.2.27  : Identify self in useragent when fetching shepherd files
-# 0.2.28  : Changing status file format again
-# 0.2.30  : Run transitional grabber(s) as a once-off to establish preferred
-#           title translations.
 # 0.2.31  : split tv_grab_au (install/test/upgrade/enable/disable) from
-#           shepherd (grab/reconcile/postprocess)
+#           shepherd (grab/reconcile/postprocess). Previous changelog history
+#           is in shepherd
+# 0.3.0   : This split deserves a real version bump, Linc! :)
+# 0.3.1   : honour $option_ready
 
 BEGIN { *CORE::GLOBAL::die = \&my_die; }
@@ -263,10 +238,11 @@
 
     my $rdir = "";
-    my $ldir = $CWD;
+    my $ldir = query_ldir($proggy, $progtype);
 
     if ($progtype ne "shepherd") {
 	$rdir = $progtype . "s";
-	$ldir = "$CWD/$progtype" . "s/$proggy";
-	-d ("$CWD/$progtype" . "s") or mkdir ("$CWD/$progtype" . "s") or die "Cannot create directory $CWD/$progtype" . "s: $!";
+	-d ("$CWD/$progtype" . "s") 
+	    or mkdir ("$CWD/$progtype" . "s") 
+	    or die "Cannot create directory $CWD/$progtype" . "s: $!";
     }
     -d $ldir or mkdir $ldir or die "Cannot create directory $ldir: $!";
@@ -308,5 +284,5 @@
     }
 
-    my $result = test_proggy($ldir,"$ldir/$proggy");
+    my $result = test_proggy($proggy, $progtype);
 
     $components->{$proggy}->{type} = $progtype;
@@ -346,10 +322,15 @@
 sub test_proggy
 {
-    my ($testdir,$proggyexec) = @_;
-
-    &log("Testing $proggyexec...\n");
-
-    chdir($testdir);
-    my $result = call_prog("$proggyexec --ready");
+    my ($proggy, $progtype) = @_;
+
+    &log("Testing $proggy...\n");
+
+    my $ldir = query_ldir($proggy, $progtype);
+    my $opt_ready = query_config($proggy, 'option_ready');
+    $opt_ready ||= '--version';
+    
+    chdir($ldir);
+    print "Executing $proggy $opt_ready in $ldir.\n";
+    my $result = call_prog(query_filename($proggy, $progtype) . " $opt_ready");
     chdir ($CWD);
 
@@ -358,5 +339,5 @@
     if ($result)
     {
-	&log("\nComponent $proggyexec did not exit cleanly!\n" .
+	&log("\n" . ucfirst($progtype) . " $proggy did not exit cleanly!\n" .
 	     "It may require configuration.\n\n");
     }
@@ -404,5 +385,5 @@
     foreach my $proggy (keys %$components) {
 	my $progtype = $components->{$proggy}->{type};
-	$result = test_proggy("$CWD/$progtype" . "s/$proggy", "$CWD/$progtype" . "s/$proggy/$proggy");
+	$result = test_proggy($proggy, $components->{$proggy}->{type});
 	if (!$result ne !$components->{$proggy}->{ready}) {
 	    $components->{$proggy}->{ready} = $result;
@@ -457,4 +438,19 @@
     }
     return $str;
+}
+
+sub query_filename
+{
+    my ($proggy, $progtype) = @_;
+
+    return query_ldir($proggy, $progtype) . "/$proggy";
+}
+
+sub query_ldir
+{
+    my ($proggy, $progtype) = @_;
+    my $ret = $CWD;
+    $ret .= ('/' . $progtype . "s/$proggy") if ($progtype ne 'shepherd');
+    return $ret;
 }
 
