Added brief comment.
[jquery.git] / browse / browse-new.cgi
1 #!/usr/bin/perl
2
3 use Pack;
4 use CGI;
5 use LWP::Simple;
6 use Digest::MD5 qw(md5_hex);
7
8 chdir("/home/jquery/www/src/");
9
10 my $cgi = new CGI();
11 print $cgi->header('text/javascript');
12 my $c = $cgi->param('c') || 'compressed';
13 my $v = $cgi->param('v') || 'latest';
14 my $live = 0;
15 #$v = "0.10" if ( $v eq 'latest' );
16 if ( $v eq 'dev' ) {
17   $live = 1;
18   $c = 'sane';
19   $v = 'latest';
20 } elsif ( $v eq 'debug' ) {
21   $c = 'sane';
22   $v = 'latest';
23 }
24
25 my @files = $cgi->param('files') ?
26         split(',', join(',', $cgi->param('files')) ):
27         ("jquery","fx","event","ajax");
28
29 if ($cgi->param('custom') && $cgi->param('custom') !~ /-/) {
30   $c = $cgi->param('custom');
31 }
32
33 my $md5 = $cgi->param('custom') || join('-',dupe(@files),$v,$c);
34 my $j = "build/$md5\.js";
35 my $stamp = "/* Built " . localtime() . " */\n";
36
37 if ( !-e $j && !$live ) {
38         my $f = getf();
39         open( F, ">$j" );
40         print F $stamp;
41         print F $c eq 'compressed' ? &Pack::pack($f, 62, 1, 0) : $f;
42         close( F );
43
44         if ( $c eq 'compressed' ) {
45           my $tj = $j;
46           $tj =~ s/$c\.js$/sane\.js/;
47           open( F, ">$tj" );
48           print F $stamp;
49           print F $f;
50           close( F );
51         }
52 }
53
54 if ( $cgi->param('files') ) {
55         print $cgi->redirect("/src/$v/$md5/");
56 } else {
57         #print $cgi->header('text/javascript');
58         if ( $live ) {
59                 print getf();
60         } else {
61                 my $t = `cat copyright.txt $j`;
62                 $v = $v eq 'latest' ? 'Current' : "Version $v";
63                 $t =~ s/\$VERSION/$v/ig;
64                 $t =~ s/\$MD5/$md5/ig;
65                 my $url = $cgi->param('v') . "/";
66                 $url .= $cgi->param('custom') . "/" if ( $cgi->param('custom') );
67                 $t =~ s/\$URL/$url/ig;
68                 print $t;
69         }
70 }
71
72 sub getf {
73         my $f = '';
74         foreach ( @files ) {
75                 $f .= `cat $_/$_\-$v\.js`;
76         }
77         $f =~ s/\r//g;
78         $f;
79 }
80
81 sub dupe {
82   my %check;
83   $check{$_} = 1 foreach (@_);
84   return sort keys %check;
85 }