#!/usr/bin/env python
# Licensed under the MIT license
# http://opensource.org/licenses/mit-license.php or see LICENSE file.
# Copyright 2008 Brisa Team <brisa-develop@garage.maemo.org>

import sys
import pprint

from optparse import OptionParser, OptionGroup, make_option

from brisa import config


def main():
    parser = OptionParser(usage='Usage: %prog [options] [args]')
    general = OptionGroup(parser, 'General options')
    general_options = [make_option('-v', '--version', help='display version'\
                                  ' information and exit', dest='version',
                                  action='store_true', default=False),
                       make_option('-i', '--items', help='print items of a'\
                                  ' section', metavar='SECTION',
                                  dest='item_section')]
    general.add_options(general_options)
    parser.add_option_group(general)

    set = OptionGroup(parser, 'Configuring parameters', 'Combine the '\
                      'following options to set parameters values. For'\
                      ' example: "brisa-conf -ssome_section '\
                      '-psome_parameter value".')
    set_options = [make_option('-s', '--section', help='section name to set '\
                               'parameter on', metavar='SECTION',
                               dest='section'),
                   make_option('-p', '--parameter', help='parameter name to '\
                               'set value', metavar='PARAMETER',
                               dest='parameter')]
    set.add_options(set_options)
    parser.add_option_group(set)

    (options, args) = parser.parse_args()

    if options.version:
        print 'brisa-media-server-conf 0.1.0'
        print 'License MIT: Copyright (c) 2008-2009 BRisa Team'\
              ' <http://www.opensource.org/licenses/mit-license.php>'
        print 'Written by Andre Dieb Martins.'
        sys.exit()

    if options.item_section:
        print 'Items for section %s:' % options.item_section
        pprint.pprint(config.manager.items(options.item_section))
        sys.exit()

    if options.section and options.parameter:
        config.manager.set_parameter(options.section, options.parameter,
                                     ' '.join(args))
        config.manager.save()
        sys.exit()

    if not options.section and options.parameter:
        parser.error('could not set parameter without a section name')
        sys.exit()

    if not options.parameter and options.section:
        parser.error('could not set parameter without its name')
        sys.exit()

    parser.error('invalid usage')


if __name__ == '__main__':
    main()
