Author: stepan
Date: Tue Feb  9 16:15:29 2010
New Revision: 5101
URL: http://tracker.coreboot.org/trac/coreboot/changeset/5101

Log:
I took Rob Landley's nice "menuconfig2html.py" script from
http://landley.net/hg/kdocs and modified it to produce MediaWiki output
for coreboot's Option List at http://coreboot.org/Coreboot_Options. The
attached patch exchanges our old ("newconfig") optionlist script with
the new one.

Signed-off-by: Stefan Reinauer <[email protected]>
Acked-by: Patrick Georgi <[email protected]>

Added:
   trunk/util/optionlist/kconfig2wiki   (contents, props changed)
Deleted:
   trunk/util/optionlist/Options-wiki.xsl
   trunk/util/optionlist/Options.xsl
   trunk/util/optionlist/mkOptionList.py
Modified:
   trunk/util/optionlist/Makefile
   trunk/util/optionlist/README

Modified: trunk/util/optionlist/Makefile
==============================================================================
--- trunk/util/optionlist/Makefile      Tue Feb  9 13:32:55 2010        (r5100)
+++ trunk/util/optionlist/Makefile      Tue Feb  9 16:15:29 2010        (r5101)
@@ -1,10 +1,9 @@
 # 
-# Copyright (C) 2005 Stefan Reinauer <[email protected]>
+# Copyright (C) 2010 coresystems GmbH
 # 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
+# the Free Software Foundation; version 2 of the License.
 # 
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -16,17 +15,12 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 # 
 
-all: html wiki
 
-html:
-       ./mkOptionList.py
-       @#saxon  Options.xml Options.xsl > Options.html
-       xsltproc Options.xsl Options.xml > Options.html
-       
-wiki:
-       ./mkOptionList.py
-       xsltproc Options-wiki.xsl Options.xml > Options.wiki
+SVNVERSION := $(shell LC_ALL=C svnversion -cn ../.. | sed -e "s/.*://" -e 
"s/\([0-9]*\).*/\1/" | grep "[0-9]" || LC_ALL=C svn info . | grep ^Revision | 
sed "s/.*[[:blank:]]\+\([0-9]*\)[^0-9]*/\1/" | grep "[0-9]" || echo unknown)
+
+all: 
+       cd ../..; util/optionlist/kconfig2wiki src/Kconfig $(SVNVERSION) > 
util/optionlist/Options.wiki
 
 clean:
-       rm -rf Options.xml Options.html Options.wiki
+       rm -rf Options.wiki
 

Modified: trunk/util/optionlist/README
==============================================================================
--- trunk/util/optionlist/README        Tue Feb  9 13:32:55 2010        (r5100)
+++ trunk/util/optionlist/README        Tue Feb  9 16:15:29 2010        (r5101)
@@ -1,46 +1 @@
-I would like to contribute the following to the coreboot wiki in case
-it's useable:
-
-1. I have written a rather small Python script to convert the Options.lb
-   into an XML file which is much more useable for the web in most cases.
-
-2. I have written a XSLT to convert the XML file to (X)HTML to be able
-   to present it as a table.
-
-Florob (Florian Zeitz <[email protected]>)
-
-
-ChangeLog
----------
-
-* 2005-03-19 stepan
-  - fix xml stylesheet to work with xsltproc and saxon
-  - add Makefile
-  - make script a bit more verbose
-
-* 2005-03-15 florob
-  - Initial version
-
-
-License
--------
-
-Copyright (C) 2005 Florian Zeitz <[email protected]>
-Copyright (C) 2005-2006 Stefan Reinauer <[email protected]>
-Copyright (C) 2006 Uwe Hermann <[email protected]>
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
-
-
+This script creates the page http://www.coreboot.org/Coreboot_Options

Added: trunk/util/optionlist/kconfig2wiki
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ trunk/util/optionlist/kconfig2wiki  Tue Feb  9 16:15:29 2010        (r5101)
@@ -0,0 +1,133 @@
+#!/usr/bin/python
+# 
+# kconfig2wiki - Kconfig to MediaWiki converter for
+# http://www.coreboot.org/Coreboot_Options
+# 
+# Copyright (C) 2010 coresystems GmbH
+# based on http://landley.net/kdocs/make/menuconfig2html.py
+# Copyright (C) by Rob Landley
+# 
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+# 
+
+helplen = 0
+extra_chapters = 0
+
+##
+## Remove quotes from Kconfig string options
+##
+def zapquotes(str):
+       if str[0]=='"': str = str[1:str.rfind('"')]
+       return str
+
+##
+## Escape HTML special characters
+##
+def htmlescape(str):
+       return 
str.strip().replace("&","&amp;").replace("<","&lt;").replace(">","&gt;")
+
+##
+## Process Kconfig file
+##
+def readfile(filename):
+       import sys
+       global helplen
+
+       
source=filename.replace("src/","").replace("/Kconfig","").replace("Kconfig","toplevel")
+
+       try:
+               lines = open(filename).read().split("\n")
+       except IOError:
+               sys.stderr.write("File %s missing\n" % filename)
+               return
+       config = None
+       description = None
+       configtype = None
+       for i in lines:
+               if helplen:
+                       i = i.expandtabs()
+                       if not len(i) or i[:helplen].isspace():
+                               sys.stdout.write("%s\n" % htmlescape(i))
+                               continue
+                       else:
+                               helplen = 0
+                               sys.stdout.write("||\n")
+
+               words = i.strip().split(None,1)
+               if not len(words): continue
+
+               if words[0] in ("config", "menuconfig"):
+                       config = words[1]
+                       description = ""
+               elif words[0] in ("bool", "boolean", "tristate", "string", 
"hex", "int"):
+                        configtype = htmlescape(zapquotes(words[0]))
+                        if len(words)>1: description = 
htmlescape(zapquotes(words[1]))
+               elif words[0]=="prompt":
+                       description = htmlescape(zapquotes(words[1]))
+               elif words[0] in ("help", "---help---"):
+                       sys.stdout.write("|- bgcolor=\"#eeeeee\"\n")
+                       sys.stdout.write("| %s || %s || %s || %s || \n" % 
(config,source,configtype,description) )
+                       helplen = len(i[:i.find(words[0])].expandtabs())
+               elif words[0] == "comment":
+                       sys.stdout.write("|- bgcolor=\"#eeeeee\"\n")
+                       sys.stdout.write("| || || (comment) || || %s ||\n" % 
htmlescape(zapquotes(words[1])))
+               elif words[0]=="menu":
+                       if len(words)>1:
+                               temp = htmlescape(zapquotes(words[1]))
+                               if extra_chapters:
+                                       sys.stdout.write("== Menu: %s ==\n" % 
temp)
+                                       sys.stdout.write("{| border=\"0\" 
style=\"font-size: smaller\"\n");
+                                       sys.stdout.write("|- 
bgcolor=\"#6699dd\"\n")
+                                       sys.stdout.write("! align=\"left\" | 
Option\n")
+                                       sys.stdout.write("! align=\"left\" | 
Source\n")
+                                       sys.stdout.write("! align=\"left\" | 
Format\n")
+                                       sys.stdout.write("! align=\"left\" | 
Short&nbsp;Description\n")
+                                       sys.stdout.write("! align=\"left\" | 
Description\n")
+                               else:
+                                       # Don't start an extra chapter for a
+                                       # new menu
+                                       sys.stdout.write("|- 
bgcolor=\"#6699dd\"\n")
+                                       sys.stdout.write("! align=\"left\" | 
Menu: %s || || || ||\n" % temp)
+               elif words[0] == "endmenu":
+                       if extra_chapters:
+                               sys.stdout.write("|}\n")
+                       sys.stdout.write("\n")
+               elif words[0] == "source":
+                       fn=zapquotes(words[1])
+                       readfile(fn)
+               elif words[0] in ("default","depends", "select", "if", "endif", 
"#"): pass
+               #else: sys.stderr.write("unknown: %s\n" % i)
+       if helplen: sys.stdout.write("||\n")
+
+def main():
+       import sys, time
+
+       if len(sys.argv)!=3:
+               sys.stderr.write("Usage: kconfig2wiki kconfigfile version\n")
+               sys.exit(1)
+
+       sys.stdout.write("This is an automatically generated list of 
'''coreboot compile-time options'''.\n")
+       sys.stdout.write("\nLast update: %s. (r%s)\n" % 
(time.strftime('%Y/%m/%d %H:%M:%S'),sys.argv[2]))
+       sys.stdout.write("{| border=\"0\" style=\"font-size: smaller\"\n");
+       sys.stdout.write("|- bgcolor=\"#6699dd\"\n")
+       sys.stdout.write("! align=\"left\" | Option\n")
+       sys.stdout.write("! align=\"left\" | Source\n")
+       sys.stdout.write("! align=\"left\" | Format\n")
+       sys.stdout.write("! align=\"left\" | Short&nbsp;Description\n")
+       sys.stdout.write("! align=\"left\" | Description\n")
+       readfile(sys.argv[1])
+       sys.stdout.write("|}\n")
+
+if __name__ == "__main__":
+       main()

-- 
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to