diff options
Diffstat (limited to 'docs-xml/scripts/find_missing_doc')
-rwxr-xr-x | docs-xml/scripts/find_missing_doc | 119 |
1 files changed, 70 insertions, 49 deletions
diff --git a/docs-xml/scripts/find_missing_doc b/docs-xml/scripts/find_missing_doc index 6ce547be3ed..d75ef8dcc72 100755 --- a/docs-xml/scripts/find_missing_doc +++ b/docs-xml/scripts/find_missing_doc @@ -1,62 +1,83 @@ -#!/usr/bin/perl +#!/usr/bin/python -my %doc; +# Copyright (C) 2007,2012 Jelmer Vernooij <jelmer@samba.org> -$topdir = (shift @ARGV) or $topdir = "."; +# 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 3 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, see <http://www.gnu.org/licenses/>. +# -################################################## -# Reading links from manpage - -$curdir = $ENV{PWD}; - -chdir("smbdotconf"); +import optparse +import os +import re -open(IN,"xsltproc --xinclude --param smb.context ALL generate-context.xsl parameters.all.xml|"); +parser = optparse.OptionParser("source_dir") -while(<IN>) { - if( /<samba:parameter .*?name="([^"]*?)"/g ){ - my $name = $1; - $name =~ s/ //g; - $doc{$name} = "NOTFOUND"; - } -} +(opts, args) = parser.parse_args() -close(IN); +if len(args) == 1: + topdir = args[0] +else: + topdir = "." -chdir($curdir); - -################################################# -# Reading entries from source code - - -open(SOURCE,"$topdir/lib/param/param_table.c") or die("Can't open $topdir/lib/param/param_table.c: $!"); +# Reading links from manpage -while ($ln = <SOURCE>) { - last if $ln =~ m/^static\ struct\ parm_struct\ parm_table.*/; -} #burn through the preceding lines +curdir = os.getcwd() +doc = {} -while ($ln = <SOURCE>) { - last if $ln =~ m/^\s*\}\;\s*$/; - #pull in the param names only - next if $ln =~ m/.*P_SEPARATOR.*/; - next unless $ln =~ /\s*\.label\s*=\s*\"(.*)\".*/; +os.chdir("smbdotconf"); - my $name = $1; - $name =~ s/ //g; +f = os.popen("xsltproc --xinclude --param smb.context ALL generate-context.xsl parameters.all.xml", "r") +try: + for l in f.readlines(): + m = re.match('<samba:parameter .*?name="([^"]*?)"', l) + if m: + name = m.group(1).replace(" ", "") + doc[name] = False +finally: + f.close() - if($doc{lc($name)}) { - $doc{lc($name)} = "FOUND"; - } else { - print "'$name' is not documented\n"; - } -} -close SOURCE; +os.chdir(curdir) -################################################## -# Trying to find missing references +# Reading entries from source code -foreach (keys %doc) { - if($doc{$_} cmp "FOUND") { - print "'$_' is documented but is not a configuration option\n"; - } -} +f = open(os.path.join(topdir, "lib/param/param_table.c"), "r") + +# burn through the preceding lines +while True: + l = f.readline() + if l.startswith("static struct parm_struct parm_table"): + break + +for l in f.readlines(): + if re.match("^\s*\}\;\s*$", l): + break + # pull in the param names only + if re.match(".*P_SEPARATOR.*", l): + continue + m = re.match("\s*\.label\s*=\s*\"(.*)\".*", l) + if not m: + continue + + name = m.group(1) + name = name.replace(" ", "") + + if name.lower() in doc: + doc[name.lower()] = True + else: + print "'%s' is not documented" % name +f.close() + +# Try to find missing references +for key in doc.keys(): + if doc[key] == "FOUND": + print "'$_' is documented but is not a configuration option" |