]> granicus.if.org Git - postgresql/commitdiff
Add HTML output option to pgcvslog.
authorBruce Momjian <bruce@momjian.us>
Mon, 18 Feb 2002 05:33:13 +0000 (05:33 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 18 Feb 2002 05:33:13 +0000 (05:33 +0000)
src/tools/pgcvslog

index 6a4ef02e04c7f886e6f77f0d44b3d959ae7aea35..9b8ead1c4ee2373ee061ef91c16510b9b106da73 100755 (executable)
 # find . -name CVS -type d -exec rm '{}/Entries.Static' \;
 #
 
+if [ "X$1" == "X-h" ]
+then   HTML="Y"
+       shift
+else   HTML="N"
+fi
+
 cat "$@" |
 
+# protect HTML input if in HTML mode
+if [ "$HTML" = "Y" ]
+then   sed     -e 's/\&/\&amp;/g' \
+               -e 's/</\&lt;/g' \
+               -e 's/>/\&gt;/g' \
+               -e 's/"/\&quot;/g'
+else   cat
+fi |
+
 # mark each line with a datetime and line number, for sorting and merging
 # We don't print anything from the -- or == line and the date:
 
-awk '
+awk '  BEGIN   {html="'"$HTML"'"; lineno = 0;}
        # store working directory
        $0 ~ /^Working file:/   {workingfile = "/" $3}
 
@@ -33,27 +48,39 @@ awk '
                # print blank line to separate entries
                if (datetime != "")
                {
-                       printf ("%s| %10d|%s\n", datetime, NR, "");
-                       printf ("%s| %10d|%s\n", datetime, NR, "---");
+                       if (html != "Y")
+                               printf ("%s| %10d|%s\n", datetime, lineno++, "");
+                       printf ("%s| %10d|", datetime, lineno++);
+                       if (html != "Y")
+                               printf ("%s\n", "---");
+                       else    printf ("<HR>\n");
                }
                datetime="";
        }
 
        # if we have a saved datetime, print filename, date line, and committer
-       datetime != "" {printf ("%s| %10d| %s\n", datetime, NR, $0);}
+       datetime != "" {printf ("%s| %10d| %s\n", datetime, lineno++, $0);}
 
-       $1 == "date:"   \
+       $1 == "date:" \
        {
                # get entry date
                datetime=$2"-"$3
                if (workingfile != "")
                {
+                       printf ("%s| %10d|", datetime, lineno++);
+                       if (html != "Y")
+                               printf ("%s\n", workingfile);
+                       else    printf ("<SMALL><FONT COLOR=\"red\">%s</FONT></SMALL>\n", workingfile);
+
+                       # output name of committer
                        # remove semicolon from committers name
+                       gsub("/", "-", $2);
+                       gsub(";", "", $3);
                        gsub(";", "", $5);
-                       printf ("%s| %10d|%s\n", datetime, NR-2, workingfile);
-                       printf ("%s| %10d|%s\n", datetime, NR-1, $0);
-                       # output name of committer
-                       printf ("%s| %10d|  %70s\n", datetime, NR+1, $5);
+                       printf ("%s| %10d|", datetime, lineno++);
+                       if (html != "Y")
+                               printf ("%78s\n", $5);
+                       else    printf ("<DIV ALIGN=\"right\"><SMALL><FONT COLOR=\"teal\">%s</FONT> <FONT COLOR=\"green\">%s</FONT></SMALL></DIV>\n", $5, $2);
                }
        }
 
@@ -64,12 +91,11 @@ sort | cut -d'|' -f3 | cat |
 
 # collect duplicate narratives
 
-awk '   BEGIN   { slot = 0; oldslot=0; save_working = ""; }
+awk '   BEGIN   { slot = 0; oldslot=0; save_working = ""; html="'"$HTML"'"}
        {
                # We have a filename, so we look at the previous
                # narrative to see if it is new narrative text.
-               #
-               if ($0 ~ /^\//)
+               if ($0 ~ /^\// || $0 ~ />\//)
                {
                        # If there are a different number of narrative
                        # lines, they can not possibly be the same.
@@ -93,7 +119,13 @@ awk '   BEGIN   { slot = 0; oldslot=0; save_working = ""; }
                        {
                                if (oldslot)
                                        for (i=1; i <= oldslot; i++)
+                                       {
                                                print oldnarr[i];
+                                               if (html == "Y" && 
+                                                   oldnarr[i] != "<HR>" &&
+                                                   oldnarr[i] !~ "^<DIV ")
+                                                       print "<BR>";
+                                       }
 
                                # save the current narrative
                                for (i=1; i <= slot; i++)
@@ -104,12 +136,14 @@ awk '   BEGIN   { slot = 0; oldslot=0; save_working = ""; }
 
                        # dump out the previous filename
                        print save_working;
+                       if (html == "Y")
+                               print "<BR>";
 
                        # store the current filename for later printing
                        save_working = $0;
                }
+               else
                # we have a narrative line
-               else if ($1 != "date:")
                {
                        # accumulate narrative
                        narr[++slot] = $0;
@@ -117,9 +151,31 @@ awk '   BEGIN   { slot = 0; oldslot=0; save_working = ""; }
        }
        END     {
                        # dump out the last filename
+
                        print save_working;
+                       if (html == "Y")
+                               print "<BR>";
 
                        # dump out the last narrative
                        for (i=1; i <= slot; i++)
+                       {
                                print narr[i];
-               }'
+                               if (html == "Y" && 
+                                   oldnarr[i] != "<HR>" &&
+                                   oldnarr[i] !~ "^<DIV ")
+                                       print "<BR>";
+                       }
+               }' |
+
+# add HTML wrapper
+if [ "$HTML" = "Y" ]
+then   echo "<HTML>"
+       echo "<HEAD>"
+       echo "<TITLE>CVS</TITLE>"
+       echo "</HEAD>"
+       echo "<BODY>"
+       cat
+       echo "</BODY>"
+       echo "</HTML>"
+else   cat
+fi