OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Thomas Lotterer Root: /e/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-tools Date: 02-Feb-2005 10:35:23 Branch: HEAD Handle: 2005020209352300 Modified files: openpkg-tools/cmd bf-ui.pl Log: allow interleaved output generation and printing. This is especially useful for the matrix function and removes ugly special cases from embedded objects (css, gif, jpg) Summary: Revision Changes Path 1.9 +156 -134 openpkg-tools/cmd/bf-ui.pl ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-tools/cmd/bf-ui.pl ============================================================================ $ cvs diff -u -r1.8 -r1.9 bf-ui.pl --- openpkg-tools/cmd/bf-ui.pl 1 Feb 2005 14:30:45 -0000 1.8 +++ openpkg-tools/cmd/bf-ui.pl 2 Feb 2005 09:35:23 -0000 1.9 @@ -146,101 +146,150 @@ my $cgi = new CGI; my $myurl = $cgi->url(); my $dbh = &dbinit($dbfile); -my $html = new String::Divert; -$html->overload(1); - -## -## Generate Canvas -## - -# generate outer canvas -$html .= "<table class=\"bf\">\n"; -$html .= " "; $html->fold("bf"); -$html .= "</table>\n"; ## ## Generate View Part ## -$html >> "bf"; if ($cgi->param("page") eq "css") { - $html .= &cssexit(); + my $out; + $out = ''; + $out .= &viewhttp('text/html', '+10s'); + $out .= &viewcss(); + print STDOUT $out; } elsif ($cgi->param("page") eq "jpg") { - $html .= &jpgexit($cgi->param("name")); + my $out; + $out = ''; + $out .= &viewhttp('image/jpg', '+600s'); + $out .= &viewjpg($cgi->param("name")); + print STDOUT $out; } elsif ($cgi->param("page") eq "gif") { - $html .= &gifexit($cgi->param("name")); + my $out; + $out = ''; + $out .= &viewhttp('image/gif', '+600s'); + $out .= &viewgif($cgi->param("name")); + print STDOUT $out; } elsif ($cgi->param("page") eq "processing") { - $html .= &viewmain(); - $html .= &viewprocessingform(); - $html .= &viewprocessing(); + my $out; + $out = ''; + $out .= &viewhttp(undef, undef, $cgi->param("vp_autorefresh")); + $out .= &viewhtmlhead(); + $out .= &viewmainform(); + $out .= &viewprocessingform(); + $out .= &viewstatusform(); + $out .= &viewmatrixform(); + $out .= "<hr>"; + print STDOUT $out; + $out = ''; + $out .= &viewprocessing(); + $out .= &viewhtmltail(); + print STDOUT $out; } elsif ($cgi->param("page") eq "status") { - $html .= &viewmain(); - $html .= &viewstatusform(); - $html .= &viewstatus(); + my $out; + $out = ''; + $out .= &viewhttp(); + $out .= &viewhtmlhead(); + $out .= &viewmainform(); + $out .= &viewprocessingform(); + $out .= &viewstatusform(); + $out .= &viewmatrixform(); + $out .= "<hr>"; + print STDOUT $out; + $out = ''; + $out .= &viewstatus(); + $out .= &viewhtmltail(); + print STDOUT $out; } elsif ($cgi->param("page") eq "matrix") { - $html .= &viewmain(); - $html .= &viewmatrix(); + my $out; + $out = ''; + $out .= &viewhttp(); + $out .= &viewhtmlhead(); + $out .= &viewmainform(); + $out .= &viewprocessingform(); + $out .= &viewstatusform(); + $out .= &viewmatrixform(); + $out .= "<hr>"; + print STDOUT $out; + $out = ''; + &printmatrix(); + $out .= &viewhtmltail(); + print STDOUT $out; } elsif ($cgi->param("page") eq "log") { - $html .= &viewmain(); - $html .= &viewlog($cgi->param("file"), $cgi->param("mode")); + my $out; + $out = ''; + $out .= &viewhttp(); + $out .= &viewhtmlhead(); + $out .= &viewmainform(); + $out .= &viewprocessingform(); + $out .= &viewstatusform(); + $out .= &viewmatrixform(); + $out .= "<hr>"; + print STDOUT $out; + $out = ''; + &printlog($cgi->param("file"), $cgi->param("mode")); + $out .= &viewhtmltail(); + print STDOUT $out; } else { + my $out; $cgi->delete_all(); - $html .= "<h2><a href=\"" . $cgi->url() . "?page=processing\">processing</a></h2>\n"; - $html .= &viewprocessingform(); - $html .= "shows build farm package processing in real time\n"; - - $html .= "<h2><a href=\"" . $cgi->url() . "?page=status\">status</a></h2>\n"; - $html .= &viewstatusform(); - $html .= "shows package status\n"; - - $html .= "<h2><a href=\"" . $cgi->url() . "?page=matrix\">matrix</a></h2>\n"; - $html .= "shows grand total package status\n"; + $out .= &viewhttp(); + $out .= &viewhtmlhead(); + $out .= &viewmainform(); + $out .= &viewprocessingform(); + $out .= &viewstatusform(); + $out .= &viewmatrixform(); + &viewhtmltail(); + print STDOUT $out; } -$html << 1; - -## -## Generate HTTP Reponse -## - -# HTML skeleton -my $skel = ""; -$skel .= "<html>\n"; -$skel .= " <head>\n"; -$skel .= " <link rel=\"stylesheet\" type=\"text/css\" href=\"$myurl?page=css\">\n"; -$skel .= " </head>\n"; -$skel .= " <body>\n"; -$skel .= " <h1>OpenPKG build farm</h1>\n"; -$skel .= " %BODY%\n"; -$skel .= " </body>\n"; -$skel .= "</html>\n"; - -# undivert HTML output and wrap with skeleton -$html->undivert(0); -$skel =~ s|\%BODY\%|$html|s; -$html = $skel; - -# create HTTP response -my $header = {}; -$header->{type} = 'text/html'; -$header->{expires} = '+10s'; -$header->{refresh} = $cgi->param("vp_autorefresh") . "; " . $cgi->url() . "?page=processing&vp_autorefresh=" . $cgi->param("vp_autorefresh") if ($cgi->param("vp_autorefresh") > 0); -my $http = $cgi->header($header); -$http .= $html; -print STDOUT $http; - # die gracefully ;-) $dbh->disconnect(); undef $dbh; exit(0); -sub cssexit () { +sub viewhttp ($$$) +{ + my ($type, $expires, $refresh) = @_; + my $header = {}; + $header->{type} = $type || 'text/html'; + $header->{expires} = $expires || '+10s'; + if ($refresh) { + my $self = $cgi->self_url(); + $header->{refresh} = "$refresh; $self"; + } + return $cgi->header($header); +} + +sub viewhtmlhead ($) +{ + my ($html) = @_; + my $head = ""; + $head .= "<html>\n"; + $head .= " <head>\n"; + $head .= " <link rel=\"stylesheet\" type=\"text/css\" href=\"$myurl?page=css\">\n"; + $head .= " </head>\n"; + $head .= " <body>\n"; + #$head .= " <table class=\"bf\">\n"; + $head .= " <h1>OpenPKG build farm</h1>\n"; + return $head; +} + +sub viewhtmltail () +{ + my $tail = ""; + #$tail .= " </table>\n"; + $tail .= " </body>\n"; + $tail .= "</html>\n"; + return $tail; +} + +sub viewcss () { my $css = ''; $css .= "/*\n"; @@ -305,17 +354,10 @@ $css .= " color: #000000;\n"; $css .= "}\n"; - # create HTTP response - my $header = {}; - $header->{type} = 'text/html'; - $header->{expires} = '+10s'; - my $http = $cgi->header($header); - $http .= $css; - print STDOUT $http; - exit(0); + return $css; } -sub jpgexit () { +sub viewjpg () { my ($name) = @_; $name .= ".jpg"; @@ -707,17 +749,10 @@ EOT }; - # create HTTP response - my $header = {}; - $header->{type} = 'image/jpg'; - $header->{expires} = '+600s'; - my $http = $cgi->header($header); - $http .= decode_base64($jpg->{$name}); - print STDOUT $http; - exit(0); -}; + return decode_base64($jpg->{$name}); +} -sub gifexit () { +sub viewgif () { my ($name) = @_; $name .= ".gif"; @@ -740,21 +775,12 @@ EOT }; - # create HTTP response - my $header = {}; - $header->{type} = 'image/gif'; - $header->{expires} = '+600s'; - my $http = $cgi->header($header); - $http .= decode_base64($gif->{$name}); - print STDOUT $http; - exit(0); -}; + return decode_base64($gif->{$name}); +} -sub viewmain() +sub viewmainform() { - my $rv; my $html; - $html .= $cgi->start_form(); $html .= $cgi->submit('page','main'); $html .= $cgi->end_form; @@ -767,7 +793,7 @@ my $html; $html .= $cgi->start_form(); - $html .= $cgi->submit('submit','processing'); + $html .= $cgi->submit('page','processing'); $html .= " autorefresh "; $html .= $cgi->popup_menu( -name => "vp_autorefresh", @@ -834,7 +860,7 @@ } $html .= $cgi->start_form(); - $html .= $cgi->submit('submit','status'); + $html .= $cgi->submit('page','status'); $html .= " "; $html .= $cgi->popup_menu( -name => "vs_inst", @@ -861,7 +887,17 @@ return $html; } -sub viewlog() +sub viewmatrixform() +{ + my $html; + $html .= $cgi->start_form(); + $html .= $cgi->submit('page','matrix'); + $html .= $cgi->hidden(-name=>'page', -value => "matrix"); + $html .= $cgi->end_form; + return $html; +} + +sub printlog() { my ($logfile, $mode) = @_; @@ -885,23 +921,21 @@ $html .= "<pre>\n$file\n</pre>\n"; } else { - $html .= "Sorry, the logfile \"$logfile\" does not exist yet or not exist any longer"; + $html .= "Sorry, the logfile \"$logfile\" does not exist\n"; } - return $html; + print STDOUT $html; } sub viewprocessing() { my $rv; my $html; - my $myurl = $cgi->url(); $rv = $dbh->selectall_hashref("SELECT * FROM processing;", "pr_inst_host"); if (not $rv) { die "ERROR:$0: SQLite error: ".$dbh->errstr."\n"; } - $html .= "<h2><a href=\"" . $cgi->url() . "?page=processing\">processing</a></h2>\n"; $html .= "<table class=\"bf\">\n"; $html .= "<tr>"; $html .= "<td><b> </b></td>"; @@ -919,7 +953,7 @@ # host-arch-os my ($host, $arch, $os, $tag) = (%{$rv}->{$i}->{pr_inst_host}, %{$rv}->{$i}->{pr_inst_arch}, %{$rv}->{$i}->{pr_inst_os}, %{$rv}->{$i}->{pr_inst_tag}); my $inst .= $host . "-" . $arch . "-" . $os; - $html .= "<td><a href=\"" . $cgi->url() . "?page=status&submit=status&vs_inst=$host-$arch-$os\">$inst</a>" . " </td>"; + $html .= "<td><a href=\"$myurl?page=status&submit=status&vs_inst=$host-$arch-$os\">$inst</a>" . " </td>"; # name-version-release or "not building" my ($name, $version, $release) = (%{$rv}->{$i}->{pr_package_name}, %{$rv}->{$i}->{pr_package_version}, %{$rv}->{$i}->{pr_package_release}); @@ -930,7 +964,7 @@ else { my $logfile = "$inst/$package.log.$host.$arch-$os-$tag"; if ( -f "$shared/log/$logfile" and -r "$shared/log/$logfile" and -s "$shared/log/$logfile" ) { - $html .= "<td><a href=\"" . $cgi->url() . "?page=log&mode=tail&file=$logfile\">$package</a></td>"; + $html .= "<td><a href=\"$myurl?page=log&mode=tail&file=$logfile\">$package</a></td>"; } else { $html .= "<td>$package</td>"; @@ -993,15 +1027,10 @@ return ($name, $version, $release); } -sub viewmatrix() +sub printmatrix() { my $html; my ($sth, $sthpackages, $rv); - my $myurl; - - $myurl = $cgi->url(); - $html = ''; - $html .= "<h2><a href=\"" . $cgi->url() . "?page=matrix\">matrix</a></h2>\n"; my @classes; $rv = $dbh->selectall_arrayref("SELECT DISTINCT cl_package_class " . @@ -1074,16 +1103,12 @@ die "ERROR:$0: SQLite error prepare"; } - # create HTTP response - my $header = {}; - $header->{type} = 'text/html'; - $header->{expires} = '+1s'; - print STDOUT $cgi->header($header); - print STDOUT $html; $html = ""; - + $html = ''; foreach my $class (@classes) { - $html .= "<hr><h2>Class: $class</h2><hr>\n"; + $html .= "<h2>Class: $class</h2>\n"; $html .= "<pre>\n"; + print STDOUT $html; + $html = ''; my @packages; $rv = $sthpackages->execute($class); @@ -1129,13 +1154,14 @@ } } $html .= " <a href=\"$myurl?page=status&submit=status&vs_package=$package\">$package</a>\n"; - print STDOUT $html; $html = ""; } + print STDOUT $html; + $html = ''; } $html .= "</pre>\n"; - print STDOUT $html; $html = ""; + print STDOUT $html; + $html = ''; } - exit 0; } sub viewstatus() @@ -1145,11 +1171,6 @@ my ($color, $class); # red, CORE my ($select, @args, $sth, $rv); my $html; - my $myurl; - - $myurl = $cgi->url(); - $html = ''; - $html .= "<h2><a href=\"" . $cgi->url() . "?page=status\">status</a></h2>\n"; my $inst = $cgi->param("vs_inst"); $inst .= "-openpkg" if ($inst ne ""); @@ -1226,6 +1247,7 @@ $rv = undef; } + $html = ''; $html .= "<table class=\"bf\">\n"; $html .= "<tr>"; $html .= "<td><b> </b></td>"; @@ -1261,10 +1283,10 @@ } # class - $html .= "<td><a href=\"" . $cgi->url() . "?page=status&submit=status&vs_class=$class\">$class</a>" . " </td>"; + $html .= "<td><a href=\"$myurl?page=status&submit=status&vs_class=$class\">$class</a>" . " </td>"; # inst (host-arch-os) - $html .= "<td><a href=\"" . $cgi->url() . "?page=status&submit=status&vs_inst=$inst\">$inst</a>" . " </td>"; + $html .= "<td><a href=\"$myurl?page=status&submit=status&vs_inst=$inst\">$inst</a>" . " </td>"; # cvs $html .= "<td><a href=\"http://cvs.openpkg.org/rlog?f=openpkg-src/$name/$name.spec\">time</a></td>"; @@ -1272,7 +1294,7 @@ $html .= "<td><a href=\"http://cvs.openpkg.org/dir?d=openpkg-src/$name\">dir</a></td>"; # package (name-version-release) - $html .= "<td><a href=\"" . $cgi->url() . "?page=status&submit=status&vs_package=$package\">$package</a></td>"; + $html .= "<td><a href=\"$myurl?page=status&submit=status&vs_package=$package\">$package</a></td>"; $html .= "</tr>\n"; } $html .= "</table>"; @@ -1384,7 +1406,7 @@ " </body>\n" . "</html>\n"; exit(0); - }; + } } __END__ @@ . ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List openpkg-cvs@openpkg.org