#!/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 media server'\
                                   ' parameters and values',
                                   action='store_true', dest='item_section',
                                   default=False)]
    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-media-server-conf -ptest value".')
    set_option = make_option('-p', '--parameter', help='parameter name to '\
                               'set value', metavar='PARAMETER',
                               dest='parameter')
    set.add_option(set_option)
    parser.add_option_group(set)

    ifaces = OptionGroup(parser, 'Graphical interface')
    ifaces.add_options([make_option('-l', '--list', help='list all available'\
                                    ' graphical interfaces',
                                    dest='list_ifaces', default=False,
                                    action='store_true'),
                        make_option('-g', '--graphical', help='opens a '\
                                    'graphical interface, if available. If '\
                                    'unavailable or not supplied, launches '\
                                    'the default.', dest='gui_mode',
                                    metavar='INTERFACE')])
    parser.add_option_group(ifaces)

    (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:
        pprint.pprint(config.manager.items('media_server'))
        sys.exit()

    if options.parameter:
        print 'setting parameter', options.parameter, args
        config.manager.set_parameter('media_server', options.parameter,
                                     ' '.join(args))
        config.manager.save()
        sys.exit()

    if options.list_ifaces:
        from brisa_media_server.conf import get_ifaces_list
        print ' '.join(get_ifaces_list())
        sys.exit()

    if options.gui_mode:
        # GUI mode
        from brisa_media_server.conf import launch_gui, get_ifaces_list

        if options.gui_mode in get_ifaces_list():
            launch_gui(options.gui_mode)
        else:
            parser.error('interface %s is not available' % options.gui_mode)

        sys.exit()

    # Launch default GUI
    from brisa_media_server.conf import main
    main()


if __name__ == '__main__':
    main()
