remove PLC.Debug.log, use PLC.Logger.logger instead
[plcapi.git] / migrations / extract-views.py
1 #!/usr/bin/env python
2
3 import sys
4 import re
5
6 class Schema:
7
8     def __init__ (self,input,output=None):
9         self.input=input
10         self.output=output
11
12     # left part is non-greedy
13     comment=re.compile("(.*?)--.*")
14     spaces=re.compile("^\s+(\S.*)")
15     view=re.compile("(?i)\s*create\s+(or\s+replace)?\s+view.*")
16
17     def parse (self):
18         if self.output:
19             outfile = open(self.output, "a")
20         else:
21             outfile = sys.stdout
22         contents = file(self.input).read()
23         parts=contents.split(";")
24         for part in parts:
25             # normalize: remove comments, linebreaks, trailing spaces..
26             normalized=''
27             lines=part.split('\n');
28             out_lines=[]
29             for line in lines:
30                 # remove comment
31                 match=Schema.comment.match(line)
32                 if match:
33                     line=match.group(1)
34                 out_lines.append(line)
35             # get them together
36             out_line = " ".join(out_lines)
37             # remove trailing spaces
38             match=Schema.spaces.match(out_line)
39             if match:
40                 out_line=match.group(1)
41             match=Schema.view.match(out_line)
42             if match:
43                 outfile.write("{};\n".format(out_line))
44         if outfile != sys.stdout:
45             outfile.close()
46
47 if __name__ == '__main__':
48     if len(sys.argv) not in [2,3]:
49         print 'Usage:',sys.argv[0],'input [output]'
50         sys.exit(1)
51     input=sys.argv[1]
52     try:
53         output=sys.argv[2]
54     except:
55         output=None
56     Schema(input,output).parse()
57