|
Packit |
2035a7 |
#!/usr/bin/python
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
# cgi-script for searching the results
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
import sys
|
|
Packit |
2035a7 |
import glob
|
|
Packit |
2035a7 |
import os
|
|
Packit |
2035a7 |
import cgi
|
|
Packit |
2035a7 |
import cgitb
|
|
Packit |
2035a7 |
import re
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
def getfiles(path, arguments):
|
|
Packit |
2035a7 |
files = []
|
|
Packit |
2035a7 |
if 'folder' in arguments:
|
|
Packit |
2035a7 |
files.append(path + '/daca2-' + arguments['folder'].value + '.html')
|
|
Packit |
2035a7 |
else:
|
|
Packit |
2035a7 |
files.extend(sorted(glob.glob(path+'/daca2-?.html')))
|
|
Packit |
2035a7 |
files.extend(sorted(glob.glob(path+'/daca2-lib?.html')))
|
|
Packit |
2035a7 |
return files
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
def readlines(filename):
|
|
Packit |
2035a7 |
if not os.path.isfile(filename):
|
|
Packit |
2035a7 |
return []
|
|
Packit |
2035a7 |
f = open(filename, 'rt')
|
|
Packit |
2035a7 |
lines = f.readlines()
|
|
Packit |
2035a7 |
f.close()
|
|
Packit |
2035a7 |
return lines
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
def trimline(line):
|
|
Packit |
2035a7 |
while len(line)>1 and (line[-1]=='\r' or line[-1]=='\n'):
|
|
Packit |
2035a7 |
line = line[:-1]
|
|
Packit |
2035a7 |
return line
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
def matchline(line, id):
|
|
Packit |
2035a7 |
return line.endswith('[' + id + ']')
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
def doSearch(path,arguments):
|
|
Packit |
2035a7 |
id = arguments['id'].value
|
|
Packit |
2035a7 |
for g in getfiles(path, arguments):
|
|
Packit |
2035a7 |
ftp = ''
|
|
Packit |
2035a7 |
found = False
|
|
Packit |
2035a7 |
for line in readlines(g):
|
|
Packit |
2035a7 |
line = trimline(line)
|
|
Packit |
2035a7 |
if line.startswith('ftp://'):
|
|
Packit |
2035a7 |
ftp = line
|
|
Packit |
2035a7 |
if matchline(line, id):
|
|
Packit |
2035a7 |
found = True
|
|
Packit |
2035a7 |
sys.stdout.write(ftp + '\n')
|
|
Packit |
2035a7 |
elif line.find(': note:') < 0:
|
|
Packit |
2035a7 |
found = False
|
|
Packit |
2035a7 |
if found:
|
|
Packit |
2035a7 |
sys.stdout.write(line + '\n')
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
def summary(path, arguments):
|
|
Packit |
2035a7 |
count = {}
|
|
Packit |
2035a7 |
for g in getfiles(path, arguments):
|
|
Packit |
2035a7 |
for line in readlines(g):
|
|
Packit |
2035a7 |
line = trimline(line)
|
|
Packit |
2035a7 |
res = re.match(r'.*: (error|warning|style|performance|portability):.*\[([a-zA-Z0-9]+)\]$', line)
|
|
Packit |
2035a7 |
if res is None:
|
|
Packit |
2035a7 |
continue
|
|
Packit |
2035a7 |
id = res.group(2)
|
|
Packit |
2035a7 |
if id in count:
|
|
Packit |
2035a7 |
count[id] = count[id] + 1
|
|
Packit |
2035a7 |
else:
|
|
Packit |
2035a7 |
count[id] = 1
|
|
Packit |
2035a7 |
print('')
|
|
Packit |
2035a7 |
for id in sorted(count.keys()):
|
|
Packit |
2035a7 |
print('' + id +''+str(count[id])+'')
|
|
Packit |
2035a7 |
print('')
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
sys.stdout.write('Content-type: text/html\r\n\r\n')
|
|
Packit |
2035a7 |
sys.stdout.write('<html><body>\n')
|
|
Packit |
2035a7 |
|
|
Packit |
2035a7 |
cgitb.enable()
|
|
Packit |
2035a7 |
arguments = cgi.FieldStorage()
|
|
Packit |
2035a7 |
if 'id' in arguments:
|
|
Packit |
2035a7 |
id = arguments['id'].value
|
|
Packit |
2035a7 |
#id = 'oppositeInnerCondition'
|
|
Packit |
2035a7 |
print(id)
|
|
Packit |
2035a7 |
sys.stdout.write('\n')
|
|
Packit |
2035a7 |
doSearch('../htdocs/devinfo/daca2-report', arguments)
|
|
Packit |
2035a7 |
#doSearch(os.path.expanduser('~/temp'), id)
|
|
Packit |
2035a7 |
sys.stdout.write('\n')
|
|
Packit |
2035a7 |
else:
|
|
Packit |
2035a7 |
summary('../htdocs/devinfo/daca2-report', arguments)
|
|
Packit |
2035a7 |
#summary(os.path.expanduser('~/temp'), arguments)
|
|
Packit |
2035a7 |
sys.stdout.write('</body></html>\n')
|