source: utils/get-guide-versions @ 1103

Last change on this file since 1103 was 1103, checked in by Dominic Hargreaves, 14 years ago

Restore full path to output file (munged in [879]).

  • Property svn:executable set to *
File size: 2.9 KB
Line 
1#!/usr/bin/perl
2#
3# Prints out a list of guides and the software versions they're using.
4
5use strict;
6use warnings;
7use XML::Simple;
8use LWP::UserAgent;
9
10my $out = "/srv/www/dev.openguides.org/html/static/versions.html";
11
12my %guides = ( Birmingham => 'http://birmingham.openguides.org/',
13               Cotswolds => 'http://cotswolds.openguides.org/',
14               Glasgow => 'http://glasgow.openguides.org/',
15               Lancaster => 'http://lancaster.openguides.org/',
16               London => 'http://london.openguides.org/',
17               Manchester => 'http://manchester.openguides.org/',
18               'Randomness (London)' => 'http://london.randomness.org.uk/',
19               'Milton Keynes' => 'http://miltonkeynes.openguides.org/',
20               Norwich => 'http://norwich.openguides.org/',
21               Nottingham => 'http://nottingham.openguides.org/',
22               Oxford => 'http://oxford.openguides.org/',
23               'Vegan Oxford' => 'http://the.earth.li/~kake/cgi-bin/openguides/vegan-oxford.cgi',
24               Southampton => 'http://southampton.openguides.org/',
25               Vienna => 'http://vienna.openguides.org/',
26               'Montreal, QC' => 'http://montreal.openguides.org/',
27               'Victoria, BC' => 'http://victoria.openguides.org/',
28               'Boston, MA' => 'http://boston.openguides.org/',
29               'Saint Paul, MN' => 'http://saintpaul.openguides.org/',
30               'New York' => 'http://newyork.openguides.org/',
31               'The Tourist Engineer' => 'http://engineer.openguides.org/',
32             );
33
34my $ua = LWP::UserAgent->new(agent => "OpenGuides get-guide-versions");
35
36open OUT, ">$out" or die $!;
37
38print OUT "<html><head><title>Versions of OpenGuides in use</title></head>\n";
39print OUT "<body>\n";
40print OUT "Last updated: " . scalar(localtime(time)) . "\n";
41print OUT "<table>\n";
42
43foreach my $guide (sort keys %guides) {
44    print OUT "<tr><td><a href=\"$guides{$guide}\">$guide</td><td>";
45
46    # Try DOAP
47    my $success = 0;
48    my $response = $ua->get("$guides{$guide}?action=about;format=rdf");
49    if ($response->is_success) {
50        my $doap = eval { XMLin($response->content)} ;
51        if ($@) {
52            # fall through
53        } else {
54            if (my $version = eval { $doap->{Project}->{release}->{Version}->{revision} }) {
55                print OUT "$version (DOAP)";
56                $success++;
57            }
58        }
59    }
60    if ($success == 0) {
61        $response = $ua->get($guides{$guide});
62        if ($response->is_success) {
63            my $content = $response->content;
64            if ($content =~ /version.(0\.\d+(-\w+)?)/s) {
65                print OUT $1;
66            } else {
67                print OUT "Not found";
68            }
69            print OUT " (HTML)";
70        } else {
71            print OUT "No methods worked";
72        }
73        print OUT "</td></tr>\n";
74    }
75}
76
77print OUT "</table></body></html>\n";
78
79close OUT;
Note: See TracBrowser for help on using the repository browser.