#! /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, timestep=args.timesteps)

    # write it out
    meshio.write(
        args.outfile,
        points,
        cells,
        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 mesh formats (msh, vtk, vtu, exodus, xdmf,...).'
        )

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

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

    parser.add_argument(
        '--timesteps', '-t',
        metavar='TIMESTEP',
        type=int,
        nargs='+',
        default=None,
        help='read a particular time step/range (default: all)'
        )

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

    return parser.parse_args()


if __name__ == '__main__':
    _main()
