Skip to content

Commit 7cebc2c

Browse files
author
Ed Costello
committed
DOCS335 modify errorcodes.py to generate JSON store of errors
1 parent bef80f2 commit 7cebc2c

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

bin/errorcodes.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ generateCSV = no
77
Format = separate
88
Title = "MongoDB Error and Message Codes"
99
defaultDomain = 'mongodb'
10+
generateJSON = yes

bin/errorcodes.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
generateCSV = config.get('errorcodes','generateCSV')
1818
errorsTitle = config.get('errorcodes', 'Title')
1919
errorsFormat = config.get('errorcodes', 'Format')
20+
generateJSON = config.get('errorcodes','generateJSON')
2021

2122
default_domain = "\n\n.. default-domain:: mongodb\n\n"
2223

@@ -73,6 +74,7 @@ def assignErrorCodes():
7374

7475

7576
codes = []
77+
messages = {}
7678

7779
def readErrorCodes():
7880
"""Open each source file in sourceroot and scan for potential error messages."""
@@ -101,6 +103,8 @@ def readErrorCodes():
101103
lineNum = 1
102104

103105
stripChars = " " + "\n"
106+
sourcerootOffset = len(sourceroot)
107+
104108

105109
for line in open( x ):
106110

@@ -129,6 +133,21 @@ def repl( m ):
129133
code = m[4]
130134
message = m[5]
131135
codes.append( ( x , lineNum , line , code, message, severity ) )
136+
if x.startswith(sourceroot):
137+
fn = x[sourcerootOffset+1:].rpartition("/2")[2]
138+
# fn = f.rpartition("/")[2]
139+
140+
msgDICT = {
141+
'id': code,
142+
'text':message,
143+
'sev':severity,
144+
'user':'',
145+
'sys':'',
146+
'ln':lineNum,
147+
'f':fn,
148+
'src': line.strip(stripChars)
149+
}
150+
messages[int(code)] = msgDICT
132151

133152
return start + "(" + spaces + code
134153

@@ -279,4 +298,10 @@ def genErrorOutputCSV():
279298
genErrorOutput()
280299
if (generateCSV == 'yes'):
281300
genErrorOutputCSV()
282-
301+
if (generateJSON== 'yes'):
302+
import json
303+
outputFile = "{}/errorcodes.json".format(resultsRoot)
304+
out = open(outputFile, 'wb')
305+
sys.stderr.write("Generating JSON file: {}\n".format(outputFile))
306+
out.write(json.dumps(messages))
307+
out.close()

draft/reference/error/errorcodes.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)