mirror of
https://github.com/kennethreitz/heroku-buildpack-python.git
synced 2026-06-05 23:10:16 +00:00
42 lines
1.1 KiB
Python
Executable File
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)
|