source: trunk/HELP_SOURCE/xml_2_depends.pl

Last change on this file was 14048, checked in by westram, 9 years ago
  • help-generation
    • no longer accept broken LINKs
    • when generating dependencies:
      • delete .xml files with broken dependencies and delete dependency file
      • fixes bad behavior after renaming a helpfile
  • Property svn:executable set to *
File size: 2.0 KB
Line 
1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6sub main() {
7  my $args = scalar(@ARGV);
8  if ($args<2) {
9    die ("Usage: xml_2_depends.pl XSLTPROC STYLESHEET XSLTPROCARGS\n".
10         "   or  xml_2_depends.pl CHECK RESULTOFFIRSTCALL");
11  }
12
13  my $first = shift @ARGV;
14
15  if ($first eq'CHECK') {
16    # second pass:
17    # * check for invalid dependencies
18    # * if found -> delete depending .xml
19    if ($args>2) { die "Too many arguments"; }
20    my $depends = shift(@ARGV);
21    my $deleted_xml = 0;
22    open(DEPENDS,'<'.$depends) || die "can't read '$depends' (Reason: $!)";
23    while (my $line=<DEPENDS>) {
24      chomp($line);
25
26      my @depends = split(/[ :]+/,$line);
27      my $count   = scalar(@depends);
28
29      my $xml = $depends[0];
30      my $invalid = undef;
31      for (my $d=1; ($d<$count) and (not defined $invalid); ++$d) {
32        my $hlp = $depends[$d];
33        if (not -f $hlp) {
34          $invalid = $hlp;
35        }
36      }
37      if (defined $invalid) {
38        print STDERR "Invalid dependency '$invalid' found for '$xml' -> deleting .xml\n";
39        unlink($xml) || die "Failed to unlink '$xml' (Reason: $!)";
40        $deleted_xml++;
41      }
42    }
43    close(DEPENDS);
44
45    if ($deleted_xml>0) {
46      print STDERR "Deleted $deleted_xml .xml-files that had invalid dependencies\n";
47      print STDERR "Removing $depends\n";
48      unlink($depends) || die "Failed to unlink '$depends' (Reason: $!)";
49      die "Can't continue - please rerun (maybe caused by renaming a helpfile)";
50    }
51  }
52  else {
53    # first pass: generate dependencies from .xml
54    if ($args<3) { die "Missing arguments"; }
55
56    my $XSLTPROC     = $first;
57    my $STYLESHEET   = shift @ARGV;
58    my $XSLTPROCARGS = join(' ',@ARGV);
59
60    while (my $line=<STDIN>) {
61      chomp($line);
62      my @xml = split(/ /,$line);
63      foreach my $xml (@xml) {
64        my $cmd = $XSLTPROC.' --stringparam xml '.$xml.' '.$XSLTPROCARGS.' '.$STYLESHEET.' '.$xml;
65        system($cmd)==0 || die "Failed to execute '$cmd' (Reason: $?)";
66      }
67    }
68  }
69}
70main();
Note: See TracBrowser for help on using the repository browser.