gitweb: Introduce %actions_info, gathering information about actions
authorJakub Narebski <jnareb@gmail.com>
Sun, 5 Dec 2010 23:01:09 +0000 (6 00:01 +0100)
committerJakub Narebski <jnareb@gmail.com>
Sun, 5 Dec 2010 23:01:09 +0000 (6 00:01 +0100)
Currently it only contains information about output format, and is not
used anywhere.  It will be used to check whether current action
produces HTML output, and therefore is displaying HTML-based progress
info about (re)generating cache makes sense.

It can contain information about allowed extra options, whether to
display link to feed (Atom or RSS), etc. in easier and faster way than
listing all matching or all non-matching actions at appropriate place.

Currently not used; will be used in next commit, to check if action
produces HTML output and therefore we can use HTML-specific progress
indicator.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
gitweb/gitweb.perl

index c5ba1d4..3237634 100755 (executable)
@@ -818,6 +818,25 @@ our %allowed_options = (
        "--no-merges" => [ qw(rss atom log shortlog history) ],
 );
 
+our %actions_info = ();
+sub evaluate_actions_info {
+       our %actions_info;
+       our (%actions);
+
+       # unless explicitely stated otherwise, default output format is html
+       foreach my $action (keys %actions) {
+               $actions_info{$action}{'output_format'} = 'html';
+       }
+       # list all exceptions; undef means variable (no definite format)
+       map { $actions_info{$_}{'output_format'} = 'text' }
+               qw(commitdiff_plain patch patches project_index blame_data);
+       map { $actions_info{$_}{'output_format'} = 'xml' }
+               qw(rss atom opml); # there are different types (document formats) of XML
+       map { $actions_info{$_}{'output_format'} = undef }
+               qw(blob_plain object);
+       $actions_info{'snapshot'}{'output_format'} = 'binary';
+}
+
 # fill %input_params with the CGI parameters. All values except for 'opt'
 # should be single values, but opt can be an array. We should probably
 # build an array of parameters that can be multi-valued, but since for the time
@@ -1226,6 +1245,7 @@ sub evaluate_argv {
 
 sub run {
        evaluate_argv();
+       evaluate_actions_info();
 
        $pre_listen_hook->()
                if $pre_listen_hook;