#! /usr/bin/env python
'''
Convert a mesh file to another.
'''
import meshio

import numpy as np


def _main():
    # Parse command line arguments.
    args = _parse_options()

    # read mesh data
    points, cells, point_data, cell_data, field_data = \
        meshio.read(args.infile)

    # write it out
    meshio.write(
        args.outfile,
        points,
        cells,
        file_format=args.output_format,
        point_data=point_data,
        cell_data=cell_data,
        field_data=field_data
        )

    return


def _parse_options():
    '''Parse input options.'''
    import argparse

    parser = argparse.ArgumentParser(
            description=(
                'Convert between mesh formats.'
                )
            )

    parser.add_argument(
        'infile',
        type=str,
        help='mesh file to be read from'
        )

    parser.add_argument(
        '--input-format', '-i',
        type=str,
        choices=meshio.input_filetypes,
        help='input file format '
        )

    parser.add_argument(
        '--output-format', '-o',
        type=str,
        choices=meshio.output_filetypes,
        help='output file format '
        )

    parser.add_argument(
        'outfile',
        type=str,
        help='mesh file to be written to'
        )

    parser.add_argument(
        '--version', '-v',
        action='version',
        version='%(prog)s ' + ('(version %s)' % meshio.__version__)
        )

    return parser.parse_args()


if __name__ == '__main__':
    _main()
