Files
heroku-buildpack-python/opt/inject_dbs
T
2011-05-18 07:28:47 -07:00

42 lines
1.1 KiB
Python
Executable File

#!/usr/bin/env python2.7
import os
import sys
from lib2to3 import pygram, pytree
from lib2to3.pgen2 import driver
BIN_DIR = os.path.dirname(__file__)
def find(node, leaf):
if node == leaf:
return node
for c in node.children:
if find(c, leaf):
return find(c, leaf)
if __name__ == "__main__":
if len(sys.argv) != 3:
print "usage: %s settings_file target_file" % sys.argv[0]
sys.exit(1)
src = sys.argv[1]
dest = sys.argv[2]
patch = os.path.join(BIN_DIR, "dbs.py.src")
drv = driver.Driver(pygram.python_grammar, pytree.convert)
root = drv.parse_file(src)
node = find(root, pytree.Leaf(1, "DATABASES")) # Find node for DATABASES = { ... }
end = node.parent.next_sibling # calculate adjacent sibling
with open(src) as _src:
head = [_src.next() for x in xrange(end.lineno)]
tail = [l for x,l in enumerate(_src)]
with open(patch) as _patch:
body = [l for x,l in enumerate(_patch)]
with open(dest, "w") as _dest:
_dest.writelines(head)
_dest.writelines(body)
_dest.writelines(tail)