#!/usr/bin/env python
from __future__ import print_function

from hy.importer import import_file_to_ast, import_file_to_hst

import argparse
import sys

import astor.codegen

module_name = "<STDIN>"

parser = argparse.ArgumentParser(
    prog="hy2py",
    usage="%(prog)s [options] FILE",
    formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument("--with-source", "-s", action="store_true",
                    help="Show the parsed source structure")
parser.add_argument("--with-ast", "-a", action="store_true",
                    help="Show the generated AST")
parser.add_argument("--without-python", "-np", action="store_true",
                    help="Do not show the python code generated from the AST")
parser.add_argument('args', nargs=argparse.REMAINDER, help=argparse.SUPPRESS)

options = parser.parse_args(sys.argv[1:])

if options.with_source:
    hst = import_file_to_hst(options.args[0])
    print(hst)
    print()
    print()

_ast = import_file_to_ast(options.args[0], module_name)
if options.with_ast:
    print(astor.dump(_ast))
    print()
    print()

if not options.without_python:
    print(astor.codegen.to_source(_ast))
