#! /usr/bin/env python2

from __future__ import print_function

import argparse
from collections import OrderedDict
from ConfigParser import RawConfigParser
import os


def parse_args():
    parser = argparse.ArgumentParser(
        description="Run process in Porto"
    )
    parser.add_argument(
        "--print-cmd", action="store_true",
        help="print portoctl command instead of executing it"
    )
    parser.add_argument(
        "conf", nargs="+",
        help="configuration file"
    )
    return parser.parse_args()


def main():
    args = parse_args()
    config = RawConfigParser(dict_type=OrderedDict, allow_no_value=True)
    config.readfp(open(args.conf[0]))
    config.read(args.conf[1:])

    porto_args = [k + "=" + str(v) for k, v in config.items("properties")]
    cmd = "portoctl"
    porto_args.insert(0, cmd)
    porto_args.insert(1, "exec")
    porto_args.insert(2, config.get("main", "container"))
    if args.print_cmd:
        print(cmd, " ".join(porto_args[1:]))
    else:
        os.execvp(cmd, porto_args)


if __name__ == "__main__":
    main()
