#!/usr/bin/python -O

__pychecker__ = 'no-shadowbuiltin'

from optparse import OptionParser
from os import chmod, makedirs
from os.path import isdir, join
from stat import S_IWUSR, S_IRUSR, S_IRGRP, S_IROTH
from string import Template
from sys import exit, path


def main():
    parser = OptionParser(usage='usage: %prog [options]', epilog='All options are required except for "--template".')
    parser.add_option('--name')
    parser.add_option('--sparsity', metavar='INT', type='int')
    parser.add_option('--reporting-url', metavar='URL')
    parser.add_option('--install', metavar='DIR')
    parser.add_option('--template', metavar='FILE', default=join(path[0], 'application.schemas.in'))

    options, args = parser.parse_args()
    if options.name is None or options.sparsity is None or options.reporting_url is None or options.install is None or args:
        parser.print_help()
        exit(2)

    mapping = {
        'name': options.name,
        'reporting_url': options.reporting_url,
        'sparsity': options.sparsity,
        }

    schemasdir = join(options.install, 'etc', 'gconf', 'schemas')
    if not isdir(schemasdir):
        makedirs(schemasdir)

    schemas = join(schemasdir, 'sampler-%s.schemas' % options.name)
    schemasfile = open(schemas, 'w')
    for line in open(options.template):
        print >>schemasfile, Template(line).substitute(mapping),

    chmod(schemas, S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH)


if __name__ == '__main__':
    main()
