#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
"""
    MoinMoin - file encoding conversion

    @copyright: 2006 by Thomas Waldmann, Oliver Siemoneit
    @license: GNU GPL, see COPYING for details.

    Convert data of src file in encoding src_enc to encoding
    dst_enc in dst_file.

    Usage:

    recode.py src_enc dst_enc src_file dst_file

    Example:

    # Using non utf-8 editor to edit utf-8 file:

    # Make a working copy using iso-8859-1 encoding
    recode.py utf-8 iso-8859-1 de.po de-iso1.po

    # Use non-utf8 editor
    $EDITOR de-iso1.po

    # Recode back to utf-8
    recode.py iso-8859-1 utf-8 de-iso1.po de-utf8.po

    # Review changes and replace original if everything is ok
    diff de.po de-utf8.po | less
    mv de-utf8.po de.po

"""

import sys

def error(msg):
    sys.stderr.write(msg + '\n')
    
def run():
    try:
        cmd, src_enc, dst_enc, src_file, dst_file = sys.argv

        lines = []
        for line in open(src_file).readlines():
            lines += unicode(line, src_enc).encode(dst_enc)

        open(dst_file,"w").writelines(lines)

    except UnicodeError, err:
        error("Can't recode: %s" % str(err))
    except LookupError, err:
        error(str(err))
    except ValueError:
        error("Wrong number of arguments")
        error(__doc__)


if __name__ == "__main__":
    run()

