YETUS-1089. replaceable is not consistently handled (#208)
* turn replaceb into a bool so that it always has a value
* make the lint actually check the text not what the template table
looks like
* fix the condition where the output file doesn't have a directory
Signed-off-by: Sean Busbey <busbey@apache.org>
diff --git a/shelldocs/src/main/python/shelldocs.py b/shelldocs/src/main/python/shelldocs.py
index c953d1f..c9e7d9c 100755
--- a/shelldocs/src/main/python/shelldocs.py
+++ b/shelldocs/src/main/python/shelldocs.py
@@ -78,7 +78,8 @@
self.name = None
self.audience = None
self.stability = None
- self.replaceb = None
+ self.replacetext = None
+ self.replaceb = False
self.returnt = None
self.desc = None
self.params = None
@@ -91,7 +92,7 @@
if self.stability == other.stability:
if self.replaceb == other.replaceb:
return self.name < other.name
- if self.replaceb == "Yes":
+ if self.replaceb:
return True
else:
if self.stability == "Stable":
@@ -106,7 +107,8 @@
self.name = None
self.audience = None
self.stability = None
- self.replaceb = None
+ self.replacetext = None
+ self.replaceb = False
self.returnt = None
self.desc = None
self.params = None
@@ -165,13 +167,14 @@
def setreplace(self, text):
'''set the replacement state'''
- self.replaceb = docstrip("replaceable", text)
- self.replaceb = self.replaceb.capitalize()
+ self.replacetext = docstrip("replaceable", text)
+ if self.replacetext.capitalize() == "Yes":
+ self.replaceb = True
def getreplace(self):
'''get the replacement state'''
- if self.replaceb == "Yes":
- return self.replaceb
+ if self.replaceb:
+ return "Yes"
return "No"
def getinter(self):
@@ -258,17 +261,17 @@
getfuncs = {
"audience": self.getaudience,
"stability": self.getstability,
- "replaceable": self.getreplace,
+ "replaceable": self.replacetext,
}
validvalues = {
"audience": ("Public", "Private"),
"stability": ("Stable", "Evolving"),
- "replaceable": ("Yes", "No"),
+ "replaceable": ("yes", "no"),
}
messages = []
for attr in ("audience", "stability", "replaceable"):
value = getfuncs[attr]()
- if value == "None":
+ if value == "None" and attr != 'replaceable':
messages.append("%s:%u: ERROR: function %s has no @%s" %
(self.getfilename(), self.getlinenum(),
self.getname(), attr.lower()))
@@ -381,8 +384,9 @@
""" write the markdown file """
try:
directory = os.path.dirname(filename)
- if not os.path.exists(directory):
- os.makedirs(directory)
+ if directory:
+ if not os.path.exists(directory):
+ os.makedirs(directory)
except OSError as exc:
if exc.errno == errno.EEXIST and os.path.isdir(directory):
pass
@@ -411,7 +415,7 @@
parser = ArgumentParser(
prog='shelldocs',
epilog="You can mark a file to be ignored by shelldocs by adding"
- " 'SHELLDOC-IGNORE' as comment in its own line. "+
+ " 'SHELLDOC-IGNORE' as comment in its own line. " +
"--input may be given multiple times.")
parser.add_argument("-o",
"--output",