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 .= "&nbsp;autorefresh&nbsp;";
       $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 .= "&nbsp;";
       $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>&nbsp;</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>" . 
"&nbsp;</td>";
  +         $html .= "<td><a 
href=\"$myurl?page=status&submit=status&vs_inst=$host-$arch-$os\">$inst</a>" . 
"&nbsp;</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 .= "&nbsp;<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>&nbsp;</b></td>";
  @@ -1261,10 +1283,10 @@
            }
   
            # class
  -         $html .= "<td><a href=\"" . $cgi->url() . 
"?page=status&submit=status&vs_class=$class\">$class</a>" . "&nbsp;</td>";
  +         $html .= "<td><a 
href=\"$myurl?page=status&submit=status&vs_class=$class\">$class</a>" . 
"&nbsp;</td>";
   
            # inst (host-arch-os)
  -         $html .= "<td><a href=\"" . $cgi->url() . 
"?page=status&submit=status&vs_inst=$inst\">$inst</a>" . "&nbsp;</td>";
  +         $html .= "<td><a 
href=\"$myurl?page=status&submit=status&vs_inst=$inst\">$inst</a>" . 
"&nbsp;</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

Reply via email to