#!/usr/bin/env python

import argparse
import os
from time import sleep
from eureka_template.command import Command
from eureka_template.template_writer import TemplateWriter
from eureka_client import EurekaClient

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-e", "--eureka", required=True,
                        help="Eureka server")
    parser.add_argument("-t", "--template", required=True,
                        help="Template file path")
    parser.add_argument("-o", "--output", required=True,
                        help="Output file path")
    parser.add_argument("-c", "--command",
                        help="Command to execute after template generation")
    parser.add_argument("-p", "--poll-time", type=int, default=30,
                        help="Polling interval in seconds")
    parser.add_argument("--once", action='store_true',
                        help="Run once and exit")

    args = parser.parse_args()

    eureka_client = EurekaClient(
        "Template",
        eureka_url=args.eureka,
        data_center="MyOwn"
    )

    template_writer = TemplateWriter(eureka_client, args.template,
                                     args.output)
    command = Command(args.command)
    poll_time = args.poll_time

    template_writer.write()
    command.execute()

    if not args.once:
        while True:
            sleep(args.poll_time)
            if template_writer.write():
                command.execute()
