#!/usr/bin/env python

"""Gadfly installation script.

Build the sql grammar.

usage
  python <thismodule>
for a simple install or
  python <thismodule> force
for a full rebuild (with grammar regeneration).

In the current directory find or create sql.mar and sqlwhere.py
where sql.mar has the marshalled grammar data structures
for parsing sql and sqlwhere.py is a module that indicates
where the grammar file is as value of sqlwhere.filename.
"""

marfile = "sql.mar"
modfile = "sqlwhere.py"

print __doc__

from os import getcwd, path
cwd = getcwd()

modtemplate ="""
'''this module indicates where the sql datastructures are marshalled
   Auto generated on install: better not touch!
'''

filename = %s
"""

#wheremod = cwd + "/" + modfile
#where = cwd + "/" + marfile
wheremod = path.join(cwd, modfile)
where = path.join(cwd, marfile)
print
print "now creating", wheremod
f = open(wheremod, "w")
f.write( modtemplate % (`where`,) )
f.close()

from sqlgen import BuildSQL, getSQL
import sys
argv = sys.argv
force = 0
#print argv
if len(argv)>1 and argv[1]=="force":
   force = 1
if not force:
   try:
       sql = getSQL()
   except:
       print "exception", sys.exc_type, sys.exc_value
       print "during load of SQL grammar structures."
       print "Apparently the SQL grammar requires regeneration"
       force = 1
if force:
   print "now generating parser structures (this might take a while)..."
   #where = cwd + "/" + marfile
   print "building in", where
   sql = BuildSQL(where)
print
print "done."

