]> git.etc.gen.nz Git - mythtv-status.git/commitdiff
Add support for reading XML from a file.
authorAndrew Ruthven <andrew@etc.gen.nz>
Wed, 28 Nov 2007 03:34:41 +0000 (16:34 +1300)
committerAndrew Ruthven <puck@dirk.wgtn.cat-it.co.nz>
Thu, 29 Nov 2007 20:34:16 +0000 (09:34 +1300)
ChangeLog
bin/mythtv-status

index 7b8d52e50b1ee30f3aa13b71f5c27a4de349b62c..b63413d8c5163fb9efa0201379ea97ed54966dab 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 2007-11-28     Andrew Ruthven
        Be more wary about processing what the backend has sent us.
+       Add support for reading XML from a file.
 
 2007-11-23     Andrew Ruthven
        Don't set the background when changing the colour.
index a679eaef104a41f5bbdada4627214ff1b19c1b11..c9e155246f74bd454b4e1a808dc2aa44b0ccb7e7 100755 (executable)
@@ -27,6 +27,7 @@ my %display;
 my @email;
 my $email_only_on_conflict = 0;
 my $help = undef;
+my $xml_file = undef;
 
 my $VERSION = '0.5.1';
 
@@ -46,6 +47,8 @@ GetOptions(
   'schedule-conflicts!'   => \$display{'Schedule Conflicts'},
   'next-recording!'       => \$display{'Time till next recording'},
 
+  'file=s'                => \$xml_file,
+
   'help|?' => \$help,
 ) || pod2usage("\nUse --help for help.\n");
 
@@ -274,18 +277,29 @@ exit 0;
 
 # Fetch the XML status from the backend.
 sub load_xml {
-  my $url = "http://$host:$port/xml";
-  my $status = get($url);
+  my $status = "";
+
+  if (defined $xml_file) {
+    open (IN, "< $xml_file")
+      || die "Failed to open $xml_file for reading: $!\n";
 
-  die "Sorry, failed to fetch $url.\n"
-    unless defined $status;
+    $status = join("", <IN>);
+
+    close IN;
+  } else {
+    my $url = "http://$host:$port/xml";
+    $status = get($url);
+
+    die "Sorry, failed to fetch $url.\n"
+      unless defined $status;
+  }
 
   # Parse the XML
   my $parser = XML::LibXML->new();
   my $xml = eval { $parser->parse_string( $status ) };
 
   if ($@) {
-    die "Failed to parse XML from $url: $@\n";
+    die "Failed to parse XML: $@\n";
   }
 
   return $xml;
@@ -465,6 +479,11 @@ Only send an email out (if --email is present) if there is a schedule conflict.
 
 Display help.
 
+=item B<< --file <file> >>
+
+Load XML from the file specified instead of querying a MythTV backend.
+Handy for debugging things.
+
 =item B<-h HOST, --host=HOST>
 
 The host to check, defaults to localhost.