#!/usr/bin/env python
#
# Expand definitions in a text file.  This works similar to variables in
# "make" but you don't use the @ sign where you use the variable.  Comments
# begin with '#'.

import sys
import fileinput
import re
import string

defn_re = re.compile(r"(\w+)=([^\s#]*)")
line_re = re.compile(r"([^#]*)")

def main():
    
    if len(sys.argv) == 1:
        source = "stdin"
    else:
	source = string.join(sys.argv[1:], " ")
    sys.stdout.write("# NOTE: this file was generated from %s\n" % source)

    defs = []

    def expand(s, defs=defs):
        for (name_re, value) in defs:
            s = name_re.sub(value, s)
        return s

    for line in fileinput.input():
        m = defn_re.match(line)
        if m:
            name = m.group(1)
            value = expand(m.group(2))
            name_re = re.compile(r"\b%s\b" % name)
            defs.append((name_re, value))
        else:
            m = line_re.match(line)
            data = expand(m.group(1))
            sys.stdout.write(data)

main()

