#! /usr/bin/env python
# -*- coding: iso-8859-1 -*-
# Copyright (C) 2002-2004 José Matos <jamatos@lyx.org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

import getopt
import sys
import LyX

def usage():
    print """Usage: lyx2lyx [options] [file]
Convert old lyx file <file> to newer format, files can be compressed with gzip.
If there no file is specified then the standard input is assumed, in this case
gziped files are not handled.
Options:
    -h, --help			this information
    -v, --version		output version information and exit
    -l, --list			list all available formats
    -d, --debug level		level=0..2 (O_ no debug information, 2_verbose)
				default: level=1
    -e, --err error_file	name of the error file or else goes to stderr
    -f, --from version		initial version (optional)
    -t, --to version		final version (optional)
    -o, --output name		name of the output file or else goes to stdout
    -n, --try-hard		try hard (ignore any convertion errors)
    -q, --quiet			same as --debug=0"""


def parse_options(argv):
    _options =  ["help", "version", "list", "debug=", "err=", "from=", "to=", "output=", "try-hard", "quiet"]
    try:
       opts, args = getopt.getopt(argv[1:], "d:e:f:hlno:qt:v", _options)
    except getopt.error:
        usage()
        sys.exit(2)

    end_format, input, output, error, debug, try_hard = 0, "", "", "", LyX.default_debug_level, 0
    for o, a in opts:
        if o in ("-h", "--help"):
            usage()
            sys.exit()
        if o in ("-v", "--version"):
            print "lyx2lyx, version %s" %(LyX.version_lyx2lyx)
            print "Copyright (C) 2002-2004 José Matos and Dekel Tsur"
            sys.exit()
        if o in ("-d", "--debug"):
            debug = int(a)
        if o in ("-q", "--quiet"):
            debug = 0
        if o in ("-l", "--list"):
            print LyX.formats_list()
            sys.exit()
        if o in ("-o", "--output"):
            output = a
        if o in ("-t", "--to"):
            end_format = a
        if o in ("-e","--err"):
            error = a
        if o in ("-n", "--try-hard"):
            try_hard = 1
    if args:
        input = args[0]

    return end_format, input, output, error, debug, try_hard


def main(argv):
    end_format, input, output, error, debug, try_hard = parse_options(argv)
    file = LyX.File(end_format, input, output, error, debug, try_hard)

    file.convert()
    file.write()

    return file.status


if __name__ == "__main__":
    sys.exit(main(sys.argv))
