Blame tools/daca2-search.cgi

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')